我有一个连我自己都觉得奇怪的问题。
我正在将大约 15 年前编写的程序翻译成 C#。该程序的一部分是密钥生成并将其存储在文件介质中。
这是我关注的部分。此特定方法从主 3DES 密钥生成 3DES 派生密钥,我们称之为 Key1
.
此方法使用Key1
来包装我们称之为wrap1
Key1
。在下一步中,它使用Key1
来包装我们称之为wrap2
wrap1
。 wrap2
储存在培养基和Key1
中,wrap1
丢失。
据我了解,包装好的密钥在用于加密和解密之前应该解开包装;但是,我不确定我们是否可以在没有用于包装它的密钥的情况下解开密钥。
请注意,我无法访问使用此密钥的程序部分来查看它的使用方式。
问题是否可以检索以这种方式包装的密钥?
为什么? 用自身包装密钥是没有意义的。 这就像购买脱水水:只需加水即可重建。 你需要密钥key1
来解密wrap1
- 然后你会得到什么? 你回来key1
,这是你已经拥有的。
当然,没有密钥(并且无法猜测)的人无法解密包装的密钥。 这就是密钥包装的工作原理。 所以,不,只给定wrap1
或仅wrap2
,您无法推断出key1
的值。