Sun的默认JKS密钥库使用专有算法,主要用于解决对标准算法的导出限制.该算法在这个类中实现,
sun.security.provider.KeyProtector
Run Code Online (Sandbox Code Playgroud)
这是算法的描述,
这是Sun专有的可导出算法的实现,旨在用于保护(或恢复明文版本)敏感密钥.该算法不是用作通用密码.这就是算法如何用于密钥保护:p - 用户密码s - 随机盐X - xor密钥P - 要保护密钥Y - 受保护密钥R - 存储在密钥库中的内容步骤1:获取用户密码,向其附加一个随机盐(固定大小),并对其进行散列:d1 =摘要(p,s)将d1存储在X中.步骤2:获取用户密码,附加上一步的摘要结果,并对其进行散列: dn =消化(p,dn-1).将dn存储在X中(将其附加到先前存储的摘要中).重复此步骤,直到X的长度与私钥P的长度匹配.步骤3:XOR X和P,并将结果存储在Y:Y = X XOR P.步骤4:存储s,Y和摘要(p ,P)在结果缓冲器R中:R = s + Y + digest(p,P),其中"+"表示连接.(注意:摘要(p,P)存储在结果缓冲区中,这样当密钥恢复时,我们可以检查恢复的密钥是否确实与原始密钥匹配.)R存储在密钥库中.受保护的密钥恢复如下:步骤1和步骤2与上述相同,除了盐不是随机生成的,而是取自步骤4的结果R(第一个长度(s)字节).步骤3(XOR运算)产生明文密钥.然后将密码与恢复的密钥连接起来,并与R的最后长度(摘要(p,P))字节进行比较.如果它们匹配,则恢复的密钥确实与原始密钥相同.
| 归档时间: |
|
| 查看次数: |
2913 次 |
| 最近记录: |