gpt4 book ai didi

java - AES 确定性加密

转载 作者:行者123 更新时间:2023-11-30 01:53:29 24 4
gpt4 key购买 nike

我想实现确定性加密,并且我试图找出为什么解密在下面的代码中不起作用。解密后的文本与原始文本不同??

    public static String encryptID(String id) {

String encryptedID = "";

try {
SecretKeySpec secretKey = new SecretKeySpec(Constants.ID_KEY.getBytes("UTF-8"), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey, new IvParameterSpec(new byte[cipher.getBlockSize()]));

encryptedID = new BASE64Encoder().encodeBuffer(cipher.doFinal(id.getBytes("UTF-8")));
} catch (Exception e) {
log.error("Encryption error. Unable to encrypt ID.", e);
encryptedID = "ERROR";
}

return encryptedID;
}

public static String decryptID(String encryptedID) {

String decryptedID = "";

try {
SecretKeySpec secretKey = new SecretKeySpec(Constants.ID_KEY.getBytes("UTF-8"), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, secretKey, new IvParameterSpec(new byte[cipher.getBlockSize()]));

byte[] decodedValue = cipher.doFinal(new BASE64Decoder().decodeBuffer(encryptedID));
decryptedID = new String(decodedValue);

} catch (Exception e) {
e.printStackTrace();
}
return decryptedID;

}

测试代码:

    @Test
public void testEncryption() {

String ecryptedID = DataUtil.encryptID("123456789");
System.out.println(ecryptedID);
System.out.println(DataUtil.decryptID(ecryptedID));

}

输出:
KB8P+heBaNSaibJoJSIMLQ==
—# @†zXÝ£ˆþhµORCôìÊ ˆf/…ºÁ´®

最佳答案

您正在再次加密字符串而不是解密它

public static String decryptID(String encryptedID) {
...
|||||||
vvvvvvv
cipher.init(Cipher.ENCRYPT_MODE, secretKey, new IvParameterSpec(new byte[cipher.getBlockSize()]));

关于java - AES 确定性加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55263930/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com