我目前正在研究一种协议,该协议使用 Diffie-Hellman 进行密钥交换。我收到一个数据包,其中包含一个 aes-128 加密部分和一个 128 位 DH 公钥。
在协议的最后一步,aes 密钥被发送到网络中的另一个对等点。此 aes 密钥应使用 128 位强密钥使用密码进行加密。
我打算使用 Blowfish(也可以是另一种密码,对问题来说并不重要)
现在要加密 aes 密钥,让我们说河豚,我必须使用一个名为 SecretKeySpec 的类(我正在使用 javax.crypto 的东西)构建一个用于加密的密钥,它在构造函数中使用一个 byteArray 来构建密钥。
来自 DH 的共享密钥是一个 128 位的 BigInteger。好吧,现在我可以将我的共享密钥解释为一个 byteArray(这仍然给我 16Bytes 中的 128 位 [其中数字被解释为 8 位数据的帧])
所以我的问题是,我的钥匙到底有多强?
是否有任何影响,因为我只使用数字作为 byteArray 的输入(所以这会以任何方式限制键空间吗?)
我认为情况并非如此,但我不是 100% 确定。也许有人可以做数学并证明我是对还是错。
如果我错了,共享密钥的密钥大小让我放心最终使用 128Bit SecretKey 进行加密?