下面我来详细讲解一下“总结一些Java常用的加密算法”的完整攻略。
1. 常用的加密算法
Java中有很多加密算法,常用的有以下几种:
1.1 对称加密算法
对称加密算法也称为共享密钥加密,是指加密和解密使用同一个密钥的加密算法。常见的对称加密算法有DES、3DES、AES等。
1.2 非对称加密算法
非对称加密算法也称为公钥加密,是指加密和解密使用不同密钥的加密算法。常见的非对称加密算法有RSA、DSA等。
1.3 散列算法
散列算法也称哈希算法,是指将任意长度的消息压缩成一个固定长度的消息摘要的算法。常见的散列算法有MD5、SHA-1、SHA-2等。
2. 示例说明
2.1 使用MD5进行消息摘要
import java.security.MessageDigest;
public class MD5Util {
public static String md5(String input) throws Exception {
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(input.getBytes());
byte[] digest = md5.digest();
StringBuilder sb = new StringBuilder();
for (byte b : digest) {
sb.append(String.format("%02x", b & 0xff));
}
return sb.toString();
}
}
以上代码是一个使用Java内置API MessageDigest实现的MD5加密算法的示例。通过调用md5方法,可以获取到一个输入的信息的MD5哈希值。
2.2 使用RSA进行加密解密
import java.security.Key;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import javax.crypto.Cipher;
public class RSAUtil {
public static final String PUBLIC_KEY = "publicKey";
public static final String PRIVATE_KEY = "privateKey";
public static KeyPair generateKeyPair() throws Exception {
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
keyPairGenerator.initialize(512); // 指定密钥长度
return keyPairGenerator.generateKeyPair();
}
public static byte[] encrypt(byte[] data, PublicKey publicKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
return cipher.doFinal(data);
}
public static byte[] decrypt(byte[] encryptedData, PrivateKey privateKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
return cipher.doFinal(encryptedData);
}
public static void main(String[] args) throws Exception {
String message = "Hello World!";
KeyPair keyPair = generateKeyPair();
PublicKey publicKey = keyPair.getPublic();
PrivateKey privateKey = keyPair.getPrivate();
byte[] encrypted = encrypt(message.getBytes(), publicKey);
byte[] original = decrypt(encrypted, privateKey);
System.out.println("原始数据:" + message);
System.out.println("加密后数据:" + new String(encrypted));
System.out.println("解密后数据:" + new String(original));
}
}
以上代码是一个使用Java内置API实现的RSA加密算法的示例。通过调用generateKeyPair生成公钥和私钥,再使用encrypt方法对需要加密的数据进行加密,使用decrypt方法对密文进行解密,就可以得到原始的数据了。
3. 总结
本文对Java常用的加密算法进行了介绍,包括对称加密算法、非对称加密算法和散列算法,并且通过示例代码分别对消息摘要与RSA加密算法进行了详细的说明。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:总结一些Java常用的加密算法 - Python技术站