gpt4 book ai didi

rest - SSLEngine 不解密所有数据

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:08:34 27 4
gpt4 key购买 nike

我正在尝试在非阻塞模式下将 SSLengine 与 SocketChannels 一起使用。

握手已正确完成,但当我尝试从 channelsocket 读取和解密 http 帖子时,只有标题被解密,正文消失了:

<code>
int num=0;

while(num==0){
num=socketChannel.read(peerNetData);
if(num==-1)
break;
}

if (num == -1) {
System.out.println("channel closed");
} else if (num == 0) {
System.out.println("no bytes to read");
} else {
// Process incoming data

peerNetData.flip();

SSLEngineResult res = engine.unwrap(peerNetData, peerAppData);
//return a ok status

peerNetData.flip();
peerAppData.flip();
System.out.println(new String(peerNetData.array()));
System.out.println(new String(peerAppData.array()));


</code>

在 peerNetData 中打印加密数据时,我得到:

?>.//POST 测试 HTTP/1.1缓存控制:无缓存内容长度:20内容类型:应用程序/八位字节流主机:192.168.X.X

?>.//?>.//?>.//?>.//?>.//?>.//?>.//?>.//?>.//?> .//?>.//<--- 此处加密字符

但是当我在 peerAppData 中打印解密数据时,我得到了

POST 测试 HTTP/1.1/缓存控制:无缓存内容长度:20内容类型:应用程序/八位字节流主机:192.168.X.X//然后这里是三个空行。

这是SSlengine的解密问题吗??

谢谢

另外我想补充一点,unwrap 方法返回一个 OK 状态。

最佳答案

很可能实际的 POST 内容是空的,除了 2 个空行(如果我没记错的话, header 后面的一行是标准的)。因为PKCS#7 padding ,至少会加密16字节的数据(一个 block ,AES为16字节)。

除此之外,数据还将包含 MAC因为 SSL 通常使用 MAC-then-encrypt(也称为绕过 according to most 的错误方式)。

所以它可能看起来像有数据,即使它只是开销。

关于rest - SSLEngine 不解密所有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26221806/

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