import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class PasswordEncryption {
private static final String ALGORITHM = "AES";
private static final String TRANSFORMATION = "AES";
// 生成密钥
public static byte[] generateKey() throws Exception {
KeyGenerator keyGen = KeyGenerator.getInstance(ALGORITHM);
keyGen.init(128); // 使用128位密钥长度
SecretKey secretKey = keyGen.generateKey();
return secretKey.getEncoded();
}
// 加密密码
public static String encrypt(String password, byte[] key) throws Exception {
SecretKeySpec secretKeySpec = new SecretKeySpec(key, ALGORITHM);
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] encryptedPassword = cipher.doFinal(password.getBytes());
return Base64.getEncoder().encodeToString(encryptedPassword);
}
// 解密密码
public static String decrypt(String encryptedPassword, byte[] key) throws Exception {
SecretKeySpec secretKeySpec = new SecretKeySpec(key, ALGORITHM);
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] decodedPassword = Base64.getDecoder().decode(encryptedPassword);
byte[] decryptedPassword = cipher.doFinal(decodedPassword);
return new String(decryptedPassword);
}
public static void main(String[] args) {
try {
// 生成密钥
byte[] key = generateKey();
// 原始密码
String originalPassword = "mySecretPassword";
// 加密密码
String encryptedPassword = encrypt(originalPassword, key);
System.out.println("Encrypted Password: " + encryptedPassword);
// 解密密码
String decryptedPassword = decrypt(encryptedPassword, key);
System.out.println("Decrypted Password: " + decryptedPassword);
} catch (Exception e) {
e.printStackTrace();
}
}
}
生成密钥:
generateKey
方法使用 KeyGenerator
类生成一个 AES 算法的密钥,并返回其编码后的字节数组。加密密码:
encrypt
方法接收一个明文密码和密钥,使用 AES 算法进行加密。加密后的结果通过 Base64 编码转换为字符串返回。解密密码:
decrypt
方法接收一个 Base64 编码的加密字符串和密钥,使用 AES 算法进行解密,并返回原始的明文密码。主程序:
main
方法中,首先生成一个密钥,然后对一个示例密码进行加密和解密操作,并打印结果。这段代码展示了如何使用 Java 的 javax.crypto
包来实现简单的 AES 密码加密和解密功能。
上一篇:查看java路径
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站