Java中常用的加密函数介绍
发布时间:2023-06-21 02:59:35
Java中常用的加密函数有很多种,主要包括摘要算法(MessageDigest)、对称加密算法(DES、AES等)、非对称加密算法(RSA、DSA等)等,接下来我们将详细介绍它们的原理和使用方法。
1.摘要算法
摘要算法是将任意长度的字符串转换为固定长度字节序列的一种算法,在Java中常用的摘要算法有MD5和SHA。它们的实现类MessageDigest可以用getInstance()方法获取,并通过update()方法来添加被计算的数据。最后,通过digest()方法获取摘要结果。
例如,使用MD5算法计算一段字符串的摘要代码:
MessageDigest md5 = MessageDigest.getInstance("MD5");
byte[] result = md5.digest("hello".getBytes());
2.对称加密算法
对称加密算法是加密密钥与解密密钥相同的一种加密方式,包括DES、3DES、AES等。在Java中,对称加密算法的实现类都在javax.crypto包中,其中最常用的是AES算法,使用方法如下:
// 生成密钥
byte[] key = "1234567890123456".getBytes();
SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
// 加密
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] result = cipher.doFinal("hello".getBytes());
// 解密
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] origin = cipher.doFinal(result);
3.非对称加密算法
非对称加密算法是加密密钥和解密密钥不同的一种加密方式,包括RSA、DSA等。在Java中,非对称加密算法的实现类也在javax.crypto包中,其中最常用的是RSA算法,使用方法如下:
// 生成密钥对
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(1024);
KeyPair keyPair = keyPairGenerator.generateKeyPair();
// 获取公钥和私钥
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
// 加密
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
byte[] result = cipher.doFinal("hello".getBytes());
// 解密
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] origin = cipher.doFinal(result);
总结
以上是Java中常用的加密函数的介绍,它们分别适用于不同的加密场景。在实际应用中,我们应该根据实际需求选择合适的加密算法,并且注意加密密钥的安全性。
