WEB开发网
开发学院软件开发Java 用 Kerberos 为 J2ME 应用程序上锁,第 3 部分: 建... 阅读

用 Kerberos 为 J2ME 应用程序上锁,第 3 部分: 建立与电子银行的安全通信(下)

 2010-03-30 00:00:00 来源:WEB开发网   
核心提示: 可以说 清单 15 的 authorDigestAndEncrypt() 方法与前面讨论的 decryptAndVerifyDigest() 方法正好相反, authorDigestAndEncrypt() 方法取 decryptAndVerifyDigest() 方法返回的纯文本数据作为输入,

可以说 清单 15 的 authorDigestAndEncrypt() 方法与前面讨论的 decryptAndVerifyDigest() 方法正好相反。 authorDigestAndEncrypt() 方法取 decryptAndVerifyDigest() 方法返回的纯文本数据作为输入。与此类似, authorDigestAndEncrypt() 方法返回的 EncryptedData 结构就是我作为输入传递给 decryptAndVerifyDigest() 方法的结构。

authorDigestAndEncrypt() 方法实现了以下策略:

首先,生成八个随机字节,它们构成了 confounder。

然后,声明一个名为 zeroedChecksum 的字节数组,它有十六个字节并初始化为零。这个有十六个零的数组作为一个全为零的摘要值。

第三,用其他的字节填入输入数据字节数组,以使数组中的字节数成为八的倍感数。编写了一个名为 getPaddedData() 的方法(如 清单 16所示),它取一个字节数组并在填充后返回这个数组。下面,链接(第 1 步得到的)confounder、(第 2 步得到的)全为零的摘要以及填充后的纯文本字节数组。

第四步是对第 3 步串接的字节数组计算 MD5 摘要值。

第五步是将摘要字节放到它们相应的位置上。第 5 的结果与第 3 步一样,只不过全为零的摘要现在换成了真正的摘要值。

现在调用 encrypt() 方法以加密第 5 步得到的字节数组。

然后,生成 etype 字段(特定于上下文的标签号 0)。

然后,调用 getOctetStringBytes() 方法将第 6 步得到的加密字节数组包装到 OCTET STRING 中。然后将 OCTET STRING 包装到 cipher 字段中(一个特定于上下文的标签号 2)。

最后,链接 etype 和 cipher 字段,将这个字符串包装到一个 SEQUENCE 中,并返回这个 SEQUENCE 。

清单 15. authorDigestAndEncrypt() 方法

上一页  1 2 3 4 5 6 7  下一页

Tags:Kerberos JME 应用程序

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接