Java加密解密函数实用手册:MD5,SHA-256,RSA 等
发布时间:2023-05-27 02:25:04
Java加密解密函数是Java编程中非常重要的一部分,用于保护敏感数据和信息的安全性。本文将介绍几种常用的加密解密算法,并提供一些相关的Java函数代码示例,以便读者更好地了解和掌握Java加密解密的实现方式。
1. MD5加密解密算法
MD5是一种不可逆的加密算法,通常用于加密密码、数字签名等数据。MD5算法将任意长度的消息转换为一个128位的散列值,通常表示为32个十六进制字符。
Java中可以使用java.security.MessageDigest类来实现MD5算法。下面是一个示例代码:
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class MD5Util {
public static String generateMD5(String input) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] inputBytes = input.getBytes();
byte[] mdBytes = md.digest(inputBytes);
StringBuffer sb = new StringBuffer();
for (int i = 0; i < mdBytes.length; i++) {
sb.append(Integer.toString((mdBytes[i] & 0xff) + 0x100, 16).substring(1));
}
return sb.toString();
}
}
2. SHA-256加密解密算法
SHA-256是一种安全散列算法,可用于加密密码、数字签名等数据。SHA-256算法将任意长度的消息转换为一个256位的散列值,通常表示为64个十六进制字符。
Java中可以使用java.security.MessageDigest类来实现SHA-256算法。下面是一个示例代码:
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class SHA256Util {
public static String generateSHA256(String input) throws NoSuchAlgorithmException {
MessageDigest md = MessageDigest.getInstance("SHA-256");
byte[] inputBytes = input.getBytes();
byte[] mdBytes = md.digest(inputBytes);
StringBuffer sb = new StringBuffer();
for (int i = 0; i < mdBytes.length; i++) {
sb.append(Integer.toString((mdBytes[i] & 0xff) + 0x100, 16).substring(1));
}
return sb.toString();
}
}
3. RSA加密解密算法
RSA是一种公钥加密算法,常用于加密和签名数据。RSA算法需要一个密钥对,包括一个公钥和一个私钥。公钥可用于加密数据,私钥可用于解密数据或签名数据。
Java中可以使用java.security.KeyPairGenerator类来生成RSA密钥对,使用javax.crypto.Cipher类来加密和解密数据。下面是一个示例代码:
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import javax.crypto.Cipher;
public class RSAUtil {
public static KeyPair generateKeyPair() throws Exception {
KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize(2048);
return keyGen.generateKeyPair();
}
public static byte[] encrypt(byte[] data, byte[] publicKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.ENCRYPT_MODE, getPublicKey(publicKey));
return cipher.doFinal(data);
}
public static byte[] decrypt(byte[] data, byte[] privateKey) throws Exception {
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
cipher.init(Cipher.DECRYPT_MODE, getPrivateKey(privateKey));
return cipher.doFinal(data);
}
private static RSAPrivateKey getPrivateKey(byte[] keyBytes) throws Exception {
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
return (RSAPrivateKey) keyFactory.generatePrivate(new PKCS8EncodedKeySpec(keyBytes));
}
private static RSAPublicKey getPublicKey(byte[] keyBytes) throws Exception {
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
return (RSAPublicKey) keyFactory.generatePublic(new X509EncodedKeySpec(keyBytes));
}
}
本文介绍了几种常见的加密解密算法,包括MD5、SHA-256和RSA算法,并提供了一些Java函数代码示例。读者可以根据自己的实际需要选择适合自己的加密解密算法,并在Java编程中应用它们,来提高数据和信息的安全性。
