gpt4 book ai didi

Java 字符串存储字节数组

转载 作者:搜寻专家 更新时间:2023-11-01 00:59:19 25 4
gpt4 key购买 nike

我想存储一个包装在 String 对象中的字节数组。这是场景

  1. 用户输入密码。
  2. 该密码的字节是使用 getBytes() String 方法获得的。
  3. 它们的字节使用 java 的 crypo 包加密。
  4. 然后使用构造函数 new String(bytes[]) 将这些字节转换为字符串
  5. 该字符串已存储或以其他方式传递(未更改)
  6. 获取该字符串的字节,它们与编码字节不同。

下面是一段代码,描述了我在说什么。

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);

但这并没有帮助。

有什么想法吗?

最佳答案

将二进制数据存储在 String 对象中不是一个好主意。您最好使用 Base64 编码之类的编码,它旨在将二进制数据转换为可打印的字符串,并且是完全可逆的。

事实上,我只是找到了一个用于 Java 的公共(public)域 base64 编码器:http://iharder.sourceforge.net/current/java/base64/

关于Java 字符串存储字节数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1295934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com