我想存储一个包装在 String 对象中的字节数组。这是场景
- 用户输入密码。
- 该密码的字节是使用 getBytes() String 方法获得的。
- 它们的字节是使用 java 的 crypo 包加密的。
- 然后使用构造函数 new String(bytes[]) 将这些字节转换为字符串
- 该字符串被存储或以其他方式传递(未更改)
- 获得该字符串的字节,它们与编码字节不同。
这是一段代码,描述了我在说什么。
String s = "test123";
byte[] a = s.getBytes();
byte[] b = env.encrypt(a);
String t = new String(b);
byte[] c = t.getBytes();
byte[] d = env.decrypt(c);
其中 env.encrypt() 和 env.decrypt() 进行加密和解密。我遇到的问题是 b 数组的长度为 8,而 c 数组的长度为 16。我认为它们是相等的。这里发生了什么?我试图修改代码如下
String s = "test123";
Charset charset = Charset.getDefaultCharset();
byte[] a = s.getBytes(charset);
byte[] b = env.encrypt(a);
String t = new String(b, charset);
byte[] c = t.getBytes(charset);
byte[] d = env.decrypt(c);
但这没有帮助。
有任何想法吗?