AES-128位字节数组到java中的数据库

时间:2012-07-18 06:59:31

标签: java encryption aes

我有一个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的字符集或我的代码。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

是的,它是一个字符编码问题。我之前在另一个地方见过它。我会对它进行base64编码或将其存储为biginteger。

// byte array[];
BigInteger value = new BigInteger(array);

您可以使用BigInteger作弊并将其用于Base64:

String b64 = value.toString(64);

BigInteger documentation

答案 1 :(得分:1)

String是您的问题的错误数据类型。如果您确实需要将原始字节编码为字符串,请使用base64

如果可能,请尝试将byte[]直接存储到数据库中。