[英]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来回映射。 您可以将数据保存在可以处理二进制数据的字段中,也可以使用不会丢失数据的编码(例如base64或Hex编码)对数据进行编码。
String encrypted = new String(bytes);
问题就在这里。 String
不是二进制数据的容器。 如果必须具有String
,请使用byte[]
或对它进行十六进制或base64编码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.