在上面编写代码时,先打印
aesKey,然后
b实际打印的是
toString数组对象方法的输出,这只是默认的Object
toString方法。所以我看不出您怎么能期望它们是相同的。
如果您确实要检查它们是否相同,则应逐字节比较它们。
关于将字节[]作为字符串存储在数据库中的实际问题,最好的选择是对base64进行编码。我建议为此使用Apache Commons
Codec库。请参阅用户指南。
编辑:
使用您所引用的base64Enpre和base64Deprer,代码如下所示:
SecureRandom ranGen = new SecureRandom(); byte[] aesKey = new byte[16]; // 16 bytes = 128 bits ranGen.nextBytes(aesKey); String a = new base64Enprer().enpre(aesKey); System.out.println(a); byte[] b = new base64Deprer().depreBuffer(a); System.out.println(new base64Enprer().enpre(b)); for (int i = 0; i < aesKey.length; i++) { System.out.println(aesKey[i] + " " + b[i]); }在这里,我还逐个遍历了字节,以表明它们确实相等。



