我有一个String(stringToEncrypt),它由AES-128加密并得到一个byte []。我尝试将该byte []作为String写入数据库。以下示例:
String encryptedString = new String(aes.encode(stringToEncrypt.getBytes()));
“encode”方法获取byte []作为参数并返回byte []。 “aes”对象进行AES-128编码过程。 问题是,当我尝试将encryptedString写入DB时,写入DB的某些字符与“String encryptedString”不同。我认为问题是关于DB的字符集或我的代码。有什么建议吗?
答案 0 :(得分:1)
是的,它是一个字符编码问题。我之前在另一个地方见过它。我会对它进行base64编码或将其存储为biginteger。
// byte array[];
BigInteger value = new BigInteger(array);
您可以使用BigInteger作弊并将其用于Base64:
String b64 = value.toString(64);
答案 1 :(得分:1)
String
是您的问题的错误数据类型。如果您确实需要将原始字节编码为字符串,请使用base64。
如果可能,请尝试将byte[]
直接存储到数据库中。