欢迎访问宙启技术站
智能推送

Java中的加密解密函数怎么用?

发布时间:2023-06-10 17:12:46

Java中提供了很多种加密解密的函数,包括对称加密算法和非对称加密算法。

对称加密算法

Java中常用的对称加密算法有DES、3DES、AES等。这些算法都是基于一个密钥(Key)来加密和解密数据的。因此,在进行加解密操作时,需要先生成密钥。

1. 生成密钥

对称加密算法中,常用的密钥位数(KeySize)有128、192和256等。构建密钥可以使用Java的SecretKeySpec类。

byte[] keyBytes = "1234567890123456".getBytes();
SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");

2. 加密数据

加密数据可以使用Java的Cipher类,它提供了一些加密和解密的方法。其中,加密方法包括:init()、update()和doFinal()三个步骤。

byte[] plaintext = "Hello, world!".getBytes();

// 初始化Cipher对象
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);

// 加密数据
byte[] ciphertext = cipher.doFinal(plaintext);

System.out.println(new String(ciphertext));

3. 解密数据

解密数据的过程与加密类似,都是使用Cipher类的init()、update()和doFinal()方法。

// 初始化Cipher对象
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, keySpec);

// 解密数据
byte[] plaintext = cipher.doFinal(ciphertext);

System.out.println(new String(plaintext));

非对称加密算法

Java中常用的非对称加密算法有RSA和DSA。这些算法与对称加密算法不同,它们使用一对公私钥(KeyPair)来加密和解密数据。

1. 生成密钥对

生成密钥对可以使用Java的KeyPairGenerator类。

KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(1024);

KeyPair keyPair = keyPairGenerator.generateKeyPair();

PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();

2. 加密数据

与对称加密算法相似,非对称加密算法也是使用Cipher类进行加密和解密。但是,在进行加密操作时,需要先使用公钥进行加密。

byte[] plaintext = "Hello, world!".getBytes();

// 初始化Cipher对象
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);

// 加密数据
byte[] ciphertext = cipher.doFinal(plaintext);

System.out.println(new String(ciphertext));

3. 解密数据

解密数据时,则需要使用私钥进行解密操作。

// 初始化Cipher对象
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.DECRYPT_MODE, privateKey);

// 解密数据
byte[] plaintext = cipher.doFinal(ciphertext);

System.out.println(new String(plaintext));

总结

Java中提供了丰富的加密解密函数,开发者可以根据自己的需求选择不同的算法进行加密和解密操作。在使用时,需要先生成密钥或密钥对,并使用相应的类进行加解密操作。