gpt4 book ai didi

java - 加密 - 解密时数据错误

转载 作者:行者123 更新时间:2023-12-01 14:59:13 25 4
gpt4 key购买 nike

我正在与服务器进行通信,并且已经到达最后阶段,在协商 key 并设置 session key 后,我发送一条加密消息,然后服务器回复。
目前,我们正在使用 AES-256 CBC,其中随机 IV 发送到服务器并在本地存储。我当前面临的问题是当我解密从服务器获得的数据时:

decryptCipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(cipher.getIV(), 0, 16));
//Get the array after the 7 bytes from the header
byte[] encrypted = Arrays.copyOfRange(sbResponse.toString().getBytes(), 7, sbResponse.toString().length());

当我尝试解密该已解析的数组时,会发生以下任何情况,但是,服务器的响应的长度或内容根本没有变化:

  • 由于出现以下错误,我无法解密它:

    javax.crypto.BadPaddingException: Given final block not properly padded
    at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
    at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
    at com.sun.crypto.provider.AESCipher.engineDoFinal(DashoA13*..)
    at javax.crypto.Cipher.doFinal(DashoA13*..)
  • 我无法解密,出现此错误:

    javax.crypto.IllegalBlockSizeException: Input length must be multiple of 16 when   decrypting with padded cipher
    at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
    at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
    at com.sun.crypto.provider.AESCipher.engineDoFinal(DashoA13*..)
    at javax.crypto.Cipher.doFinal(DashoA13*..)
  • 我可以解密它,某些 block 显示正常,但其中一些在明文中有奇怪的字符:

    k¤kC­²O©æÖ—Õw½QøX»ÌEXøÀWHÌËùtiÓaÚo at?the application
  • 一切都很顺利。

因此,我必须进行大量调用,直到从服务器获得干净的响应。

我注意到服务器确实改变了其一端的 IV,但是,在我这边,当我询问密码时,IV 始终保持不变,所以我真的不知道还能去哪里看。

以下是从服务器获取响应的代码摘录:

StringBuilder sb = new StringBuilder();
while (ConnectionStatus.LISTENING.equals(status)) {

if (in.ready()) {
sb.append((char) in.read());
} else {
if (sb.length() > 0) {
status = ConnectionStatus.OPEN;
}
}
}

if (ConnectionStatus.TIMEOUT.equals(status)) {
status = ConnectionStatus.OPEN;
throw new TimeoutException();
}

有人知道可能会发生什么吗?

如果您需要更多详细信息、代码或任何内容,请告诉我。

最佳答案

问题在于将二进制数据存储到String中。

如果InputStreamReader需要UTF-8,它很可能会遇到无效数据,因为大多数二进制流都不是有效的UTF-8。当读取器遇到非有效字符的字节序列时,数据就会丢失。

至少有两三个解决方案:

关于java - 加密 - 解密时数据错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13922255/

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