0

我有一个字符串 (stringToEncrypt) ,它由 AES-128 加密并得到一个字节 []。我尝试将该字节 [] 作为字符串写入数据库。下面的一个例子:

String encryptedString = new String(aes.encode(stringToEncrypt.getBytes()));

"encode" 方法获取一个 byte[] 作为参数并返回一个 byte[]。“aes”对象进行 AES-128 编码过程。问题是,当我尝试将 encryptedString 写入 DB 时,写入 DB 的某些字符与“String encryptedString”不同。我认为问题在于数据库的字符集或我的代码。请问有什么建议吗?

4

2 回答 2

1

是的,它是一个字符编码问题。我以前在别的地方见过。我要么对其进行base64编码,要么将其存储为一个大整数。

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

你可以用 BigInteger 作弊并将它用于 Base64 的东西:

String b64 = value.toString(64);

BigInteger 文档

于 2012-07-18T07:02:51.320 回答
1

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

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

于 2012-07-18T07:03:30.647 回答