我目前正在使用Diffie-Hellman进行密钥交换的协议。 我收到一个数据包,它由一个aes-128加密部分和一个128位DH公钥组成。用diffie-hellman共享密钥继续加密
在协议的最后一步,aes密钥被发送到网络中的另一个对端。 这个aes-key应该使用128位强密钥加密。
我计划用河豚(也可以是其它密码,其实并不重要的问题)
现在加密AES密钥,用可以说河豚,我要建立一个与秘密密钥加密一个名为SecretKeySpec的类(我使用javax.crypto的东西),它在构造函数中需要一个byteArray来构建secretKey。
来自DH的共享密钥是128位BigInteger。 好了,现在我可以解释我的共享密钥为ByteArray(至极让我在16字节[其中的数字将被解释为8个数据帧]还是128位)
所以我的问题是,如何强是我的关键真的吗?
是否有任何影响,因为我只使用数字作为输入的ByteArray(那么,这是否限制密钥空间以任何方式?)
我想,这是不是这样的,但我不是100%确定。 也许有人可以做数学并证明我对或错。
如果我错了什么密钥的共享密钥给我一块心,最后得到128Bit SecretKey的加密?
请注意,使用Blowfish加密AES密钥会降低协议对AES或Blowfish的_weakest_的强度。虽然AES发布后发现了一些针对AES的攻击,但我仍然对Blowfish进行了赌注[AES更强大](http://en.wikipedia.org/wiki/Advanced_Encryption_Standard#Known_attacks)(以及更好的检查)。 – sarnold
@sarnold:谢谢你的提示,我知道这个问题。河豚只是一个例子,也许我也使用AES。我还不确定是否需要在这一步传输更多的信息,所以我计划使用一个流式处理器来运行,以消除固定大小,迫使我使用(或填充我的数据)。我只限于一个以太网数据包,所以每个字节我都可以避免更好。 :) – evildead