SSLEngine不会解密所有数据



我正试图在非阻塞模式下将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内容很可能是空的(如果我没有弄错的话,头后面的一行是标准的)。由于PKCS#7填充,至少有16个字节的数据(一个块,AES为16个字节)将被加密。

此外,数据还将包含MAC,因为SSL通常使用MAC然后加密(根据大多数人的说法,也被称为错误的方法)。

因此,它看起来可能有数据,即使只是开销。

相关内容

  • 没有找到相关文章

最新更新