繁体   English   中英

我的解密方法中出现BadPaddingException

[英]I am getting BadPaddingException in my decrypt method

我正在使用下面的代码(片段)对用户的私人数据进行加密,以存储在数据库中,然后解密以便他们查看。

Cipher cipher = Cipher.getInstance("DESede");
byte[] bytes = cipher.doFinal(value.getBytes());
String encrypted = new String(bytes);

然后,此字符串存储在数据库中的varchar列下

解密:

Cipher cipher = Cipher.getInstance("DESede");
byte[] bytes = cipher.doFinal(value.getBytes());
String decrypted = new String(bytes);[code]

现在看来随机我偶尔

javax.crypto.BadPaddingException: Given final block not properly padded

您从加密获得的数据是二进制的 您不能安全地将byte[]转换为String来回转换,因为并非所有字节都具有1-1来回映射。 您可以将数据保存在可以处理二进制数据的字段中,也可以使用不会丢失数据的编码(例如base64Hex编码)对数据进行编码。

String encrypted = new String(bytes);

问题就在这里。 String不是二进制数据的容器。 如果必须具有String ,请使用byte[]或对它进行十六进制或base64编码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM