15.3.1 使用Bouncy Castle API创建消息摘要
消息摘要函数是由org.bouncycastle.crypto.digests包提供的,该包通过与JCA一致的方式实现各种消息摘要算法。摘 要算法必须实现orge.bouncycastle.crypto.Digest中定义的接口;这类似于同样位于SATSA-CRYPTO API中的JCA的MessageDigest接口。可以编写代码清单15-5中的代码来计算一个Web请求的MD5摘要。
代码清单15-5 计算Web请求的MD5摘要
这段代码的逻辑与使用JCA或SATSA-CRYPTO API编写的代码非常类似。在一个较高层面上,它们采用的方式是相同的:创建消息摘要算法的一个实例,使用update方法将用于计算摘要的字节传递给它,然后使用doFinal方法计算摘要。但是存在以下区别。
没有针对摘要算法的通用工厂;相反,你显式地创建所需的摘要算法的一个实例(这有助于在链接Bouncy Castle实现时限制应用程序中包含的类的数量)。
消息摘要算法不会抛出异常来提示错误。
Digest接口提供了一种方法,告诉你摘要的长度将是多少字节。
除了Digest接口提供的便捷的getDigestSize方法外,还可以调用Digest方法getAlgorithmName来得到容易理解 的消息摘要算法名称,可以通过应用程序的UI将该名称提供给用户。Bouncy Castle API提供的大多数消息摘要算法实际上都实现了ExtendedDigest接口,该接口实现Digest并添加getByteLength方法。可以调 用getByteLength来了解摘要将其算法应用到内部缓冲区的大小。
原文地址:http://book.51cto.com/art/200908/145124.htm[转载]