当前位置: 首页 > 面试题库 >

JSSE包装会创建两个需要两个包装的tls数据包。为什么?

江仲渊
2023-03-14
问题内容

我正在检查与连接的openssl客户端有关jsse tls加密和解密的Java应用程序的行为。

首先,我观察到当我为客户端数据调用unwrap时,它总是对37字节的字节进行解包并产生0。下一次的unwrap会消耗一些字节并产生一些。

起初我以为客户端会先包装一个空数组。但是后来我发现jsse代码执行相同的操作,除了它产生1个字节而不是0个字节。

因此,对a的每次调用都wrap消耗X个字节并产生Y个字节,但需要两个unwrapS,而第一个调用消耗37个字节并产生1个字节,而第二个消耗Y-37个字节并产生X-1个字节。

尽管openssl和jsse的功能几乎相同,但我希望这是正确的。但是我想知道,为什么会这样。我看不出有什么原因,因此需要更多资源…?


问题答案:

您所看到的是缓解BEAST攻击的两种略有不同的方法。一种方法是使用空片段,就像使用OpenSSL一样。该JSSE不单独发送1个字节的数据,其余类似的东西。



 类似资料:
  • 我试着将两个div并排放置,两个div之间的间距为20px。div在包装内,宽度为800px。左div是250px,右div是550px,但当然,如果我在它们之间加上20px的边距,总宽度将增加到800px以上。有没有办法强制右div宽度为550px-20px的余量? CSS 超文本标记语言 我的意思是我必须手动减小宽度还是有更好的解决方案? jsfiddle:https://jsfiddle.n

  • 问题内容: 在较高的层次上,我知道我们需要通过使用它们各自的包装类在Java集合中使用它们来“包装”原始数据类型,例如int和char。我想了解Java集合如何在低级询问:“为什么我们需要将原始数据类型包装为对象才能在集合中使用它们?”在此先感谢您的帮助。 问题答案: 在虚拟机级别,这是因为与引用类型(例如java.lang.Object及其派生类型)相比,原始类型在内存中的表示方式非常不同。例如

  • 我想创建一个组件,它是一个具有自定义样式的DIV:背景色蓝色。在那之后,我想引用它并添加文本作为子对象。我正在尝试这样做: 包装器: 我是这样实例化的: 实例: 但它不起作用。我怎么能这样做?。非常感谢。

  • 我有一个非常奇怪的问题,很简单,但我不明白问题是什么。 我有一个类,ClassA调用ClassB中的函数,比如- 类A是在我的applicationContext中定义的bean。类xml ClassB中的函数定义看起来像 IntelliJ没有指出任何语法问题,一切看起来都很正常。。。然而,当我试图编译时,Maven出现了一个异常 B类与a类位于不同的模块中,因此B类位于a类的pom中。作为依赖项

  • null 我对OSGi很陌生,所以任何人都可以澄清这些事情,不需要为log4j2特别说明。 谢了!

  • 问题内容: 我知道Java I / O使用装饰器模式。但是我觉得我理解它的错。 请说明两个代码段之间的区别: 片段1: 该应用程序符合我的期望,并且在控制台中看到结果。 片段2: 我尝试两次包装ObjectInputStream和ObjectOutputStream: 这段代码只是挂断了。我不明白为什么。请澄清。 聚苯乙烯 这仅仅是理论问题。 更新 真正的挂断行为是因为我使用管道而发生的(根据EJ