- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试在非阻塞模式下将 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/
我正在使用 Java NIO 上的 SSLEngine 来解锁服务器套接字来处理连接。我能够成功地与客户端握手并将小记录集传递到服务器。但是,当我尝试将文件传输到服务器 text/binary 时,出
我已经实现了一个辅助模块,可以让我从使用 SSL 的 channel 获取干净数据并将加密数据写入其中:这是相关接口(interface)(我在该类中也有一些非抽象方法,所以没有不要对我说“DataP
我遇到了这个异常发生 SSLEngineResult result = sslEngine.wrap(b, engineToSocketData); if(b.hasRemaining
在 Java 中有没有一种方法可以具有与 SSLEngine 相同的功能,但没有委托(delegate)任务,因为我的程序需要处理大量连接,我用 NIO 编写它的目的是使用更少的 ram,有更多的连接
我正在尝试使用 SSLEngine 实现 SSL 握手,我需要同时作为服务器和客户端来执行此操作,但是我被卡住了,我无法弄清楚原因。 握手正确开始,交换了 Hello,交换了 key ,但随后我进入了
SSLEngine documentation指示如何正确关闭 SSL 连接。更具体地说,它提供了有关如何处理断开的连接的说明: In addition to orderly shutdowns, t
我需要为我正在开发的应用程序使用基于 TLS 的 TCP 套接字。我已经经历了几十个例子,虽然我通过握手没有问题,但我似乎无法通过任何方式读取输入流(尝试了很多,包括 readline(),读取字符数
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 2 年前。
我正在尝试在非阻塞模式下将 SSLengine 与 SocketChannels 一起使用。 握手已正确完成,但当我尝试从 channelsocket 读取和解密 http 帖子时,只有标题被解密,正
背景 我正在尝试创建 2 个通过 SSL 在内部网络上相互通信的 Java 应用程序。我通过授予 SSLEngine 访问 keystore 的权限来做到这一点,该 keystore 包含要使用的证书
我在使用 SSLEngine 时遇到了一个小问题 java 。我用它来创建客户端和服务器之间的 SSL 连接。这不是基于 Web 的应用程序。 我正在为我的产品开发人员创建一个框架,以便在客户端和服务
我正在为 Android 手机编写自定义服务器来处理 https 请求。它首先监听特定端口,一旦建立连接,它就会与客户端进行握手。这是代码 fragment : ServerSocket sock =
我使用来自 http://books.google.com/books?id=l6f1jTB_XCYC&lpg=PA185&vq=scalable%20secure&pg=PA185#v=onepag
我在 Java 中使用带有 NIO 的 SSL 和一个简单的客户端/服务器概念验证应用程序。我已经启动并运行良好的握手,但之后尝试加密和解密应用程序数据让我抓狂。我想知道我是否遗漏了预期用途方面的内容
当为 ssl/https 连接配置 apache2 虚拟主机时,在添加配置并使用此命令“a2ensite pm.university.com.conf”启用配置后,我收到此错误“无效命令‘SSLEng
我有一个 Java 服务器应用程序(加载了它自己的服务器证书)试图安全地连接到另一个服务器(Microsoft - 有它的服务器证书)。 他们每个人都加载了受信任的 ROOT-CA 证书,我可以在两台
我将 SSLEngine 与 NIO 一起使用,为我的应用程序提供非阻塞 SSL 连接。在握手期间的某个时刻(可能是在收到 ServerHelloDone 之后),SSLEngine 要求我处理委托(
我有下一个案例:客户端在其信任库中只有根证书。在 TLS 握手期间,服务器将自己的证书发送给客户端,该证书使用中间证书 签名。 客户端的 SLLEngine 是否会下载中间证书来验证服务器证书,直到引
我需要通过我的代理(我相信是隧道)建立一个使用 JSSE 建立的 SSL 连接。是否已经有任何库/属性/方法,或者我必须在低级别实现它? 请注意,只需为我的程序的一个子集定义此代理。我程序中的其他 H
来自 SSLEngine 文档:“通过将 SSL/TLS 抽象与 I/O 传输机制分离,SSLEngine 可用于各种 I/O 类型,例如非阻塞 I/O(轮询) ,可选择的非阻塞 I/O,Socket
我是一名优秀的程序员,十分优秀!