pushboy 2023-06-06 11:25 采纳率: 80%
浏览 26

加解密时候发现的一个Byte[]问题

起因是这样的,需要做一个加解密的小功能,加密时候传入字符串再返回加密后的字符串,解密时候把加密后的字符串解密返回

public String decrypt(String encValue) {
        byte[] oriValueByte = oriValue.getBytes();
        byte[] encData = 加密后的byte[];
        returnStr = new String(encData);  //加密后的字符串
        System.out.println("加密返回的二进制数组22222 = " + Arrays.toString(encData));
        return returnStr ;
}

然后把加密后的字符串原样传回去解密

 public String decrypt(String encValue) {
        byte[] encValueByte = encValue.getBytes();
        System.out.println("解密传入的参数的二进制数组22222 = " + Arrays.toString(encValueByte));
        byte[] decData = 解密后的byte[]
        returnStr = new String(decData);  //解密后的字符串
        return returnStr ;
}

奇怪的地方在于

img

我以为是getbyte[]的问题,又做了个测试

        String idNumber = "142723199908162111";
        byte[] testByte = idNumber.getBytes();
        System.out.println("idNumber = " + idNumber);
        System.out.println("testByte = " + testByte);
        System.out.println("Arrays.toString = " + Arrays.toString(testByte));

        String kk = new String(testByte);
        System.out.println("kk = " + kk);

        byte[] testByte2 = kk.getBytes();
        System.out.println("testByte2 = " + testByte2);
        System.out.println("Arrays.toString2 = " + Arrays.toString(testByte2));

其实返回值是正确的

img

那么上面的代码问题在哪里呢?为什么同一个字符串返回的二进制数组不同?或者是因为两个字符串看起来一样,其实不一样?

  • 写回答

3条回答 默认 最新

  • 专家-郭老师 Java领域新星创作者 2023-06-06 11:52
    关注

    你这个问题是在于加密字符串的时候要指定下编码utf-8 即可解决。
    idNumber.getBytes("UTF-8")

    评论

报告相同问题?

问题事件

  • 创建了问题 6月6日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?