`
反求诸己
  • 浏览: 543327 次
  • 性别: Icon_minigender_1
  • 来自: 湖南娄底
社区版块
存档分类
最新评论

使用Bouncy Castle API创建消息摘要

    博客分类:
  • java
 
阅读更多

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[转载]

分享到:
评论

相关推荐

    BouncyCastle依赖.zip

    使用BouncyCastle时,需要注意兼容性和版本问题,因为不同版本的BouncyCastle可能对某些算法的支持程度不同。在Android中,由于安全限制,可能需要在应用的清单文件中声明使用Vetoed API,特别是对于低于Android API...

    Bouncy Castle 1.56 API

    **Bouncy Castle 1.56 API 深度解析** Bouncy Castle Cryptography Library,简称BC库,是JAVA和ANDROID开发中广泛使用的开源加密库。这个强大的工具集提供了多种加密算法、密钥管理和证书链处理功能,为开发者提供...

    BouncyCastle,SM2、SM3、SM4 证书加解密应用例子

    在C#中,BouncyCastle库提供了一套完整的API来处理这些国密算法。通过`Org.BouncyCastle`命名空间下的类,我们可以创建密钥对、生成哈希值、执行加密和解密操作。例如,你可以使用`Asn1`类来处理证书,`Crypto`类来...

    BouncyCastle.Crypto

    在C#环境中,BouncyCastle.Crypto.dll提供了易于使用的API,使得开发者可以方便地集成加密功能到自己的应用程序中。例如,通过`Org.BouncyCastle.Crypto`命名空间下的类和方法,可以快速实现加密、解密、签名和验签...

    bcprov-jdk16-140

    import org.bouncycastle.jce.provider.BouncyCastleProvider; Security.addProvider(new BouncyCastleProvider()); ``` 通过Bouncy Castle,开发者可以执行以下操作: 1. **加密和解密**:利用AES、DES、Blowfish...

    bcprov-jdk16-1.46.jar

    Bouncy Castle最初是为了提供对Java Cryptography Extension (JCE)的增强而创建的,它不仅包含了JCE的基本功能,还扩展了更多的加密算法和协议,比如非对称加密、数字签名、消息摘要、随机数生成等。 标签中的"jar...

    bcprov-jdk16-1.45.jar

    Bouncy Castle提供了不受这些限制的更强大的加密算法,包括对称加密、非对称加密、哈希函数、消息摘要算法、数字签名、随机数生成器等。此外,它还支持OpenSSL接口,使得Java应用可以无缝地与使用OpenSSL的系统进行...

    国密依赖包bcprov-jdk16-1.46.jar

    例如,你可以创建SM2的公钥和私钥对,使用SM3来计算消息的哈希值,或者利用SM4进行数据的加密和解密。 值得注意的是,虽然bcprov-jdk16-1.46.jar是针对JDK16编译的,但在实际使用时,可能需要根据项目所使用的Java...

    bcprov-jdk16-145.jar

    例如,通过`org.bouncycastle.jce.provider.BouncyCastleProvider`类添加安全服务提供者,然后使用Java的`java.security.KeyPairGenerator`或`java.security.SecureRandom`等类来生成密钥对和随机数。 总的来说,...

    java 国密算法实现包含SM2 SM3 SM4和数字签名、数字证书的验证

    在Java中实现SM2,你需要引入支持国密算法的库,如GMSSL或Bouncy Castle,并遵循特定的API来生成和使用SM2密钥对,进行加密和解密操作。 2. **SM3算法**:SM3是一种密码散列函数,类似于SHA-256,用于产生固定长度...

    bcprov-jdk15on jar包版本集合

    Bouncy Castle以其丰富的加密算法和良好的API设计闻名,为Java开发者提供了实现各种加密标准和协议的便捷途径。这个jar包包含了众多加密算法,如RSA、AES、DES、Blowfish、哈希函数(MD5、SHA-1、SHA-256等)、数字...

    JAVA-CA介绍.pdf

    文档中提供了Java代码示例,展示了如何添加BouncyCastle Provider,如何生成密钥对,以及如何使用DER和Base64编码来处理密钥。还展示了如何创建证书的DN和生成X.509证书。 ### 知识点九:RFC3280标准 RFC3280是...

    oracle-in-memory-wallet-samples:在内存钱包中使用连接到oracle db的示例

    : 这是其中包含的摘要: 使用Dropwizard构建的简单休息服务增强的Dropwizard DataSourceFactory( )支持内存中的钱包使用SQL Object API通过JDBI完成数据库访问使用Liquibase创建架构支持BouncyCastle密钥库...

    国密SM4加解密前后端文件.zip

    在这个项目中,后端可能使用Spring Boot来创建一个RESTful API,处理加密和解密的请求,使用Java的加密库(如Bouncy Castle)来实现SM4算法。 Vue.js是一款轻量级的前端JavaScript框架,用于构建用户界面。在本项目...

    XML数字签名技术的研究及在Java中的实现.pdf

    - **Java中的实现**: 使用Java Security API和相关库(如Bouncy Castle)来实现XML签名的创建和验证。 **4. Java中的XML数字签名实现** - **关键库**: Java自带的`javax.xml.crypto`包提供了基本的支持。 - **第三...

    SHA256withRSA-Delphi7.rar

    在Delphi 7中实现RSA加密通常需要使用如Bouncy Castle等库,这些库提供了完整的RSA实现。 在SHA256withRSA-Delphi7.rar这个压缩包中,开发者可能已经包含了用Delphi 7编写的示例代码或者组件,用于演示如何使用SHA...

    capicom数字签名及验证源代码(pkcs#7)

    在IT行业中,数字签名是一种重要的安全技术,用于确保数据的完整性和发送者的...尽管Capicom已经被弃用,但其背后的原理和方法在许多现代加密库(如Bouncy Castle或.NET的System.Security.Cryptography)中仍然适用。

    使用.net2.0 的 MD5加密/SM3加密/RSA加密/RSA签名, 用 java解密或签名验签代码

    而在Java环境,可以通过Bouncy Castle库来处理SM3加密和解密。 接着,RSA是一种非对称加密算法,它基于两个密钥:公钥和私钥。在.NET 2.0中,RSA加密和解密可以使用RSACryptoServiceProvider类来实现。在Java中,...

    JSP动作与数据加密

    4. 加密库集成:例如Bouncy Castle,是一个强大的加密库,提供了更多的加密算法和功能,可以方便地在JSP项目中集成使用。 三、数据加密的应用场景 1. 用户密码存储:使用哈希函数(通常还会加盐)对用户密码进行...

    PKCS7标准文档中英文翻译.zip

    在实际应用中,开发者通常使用编程库来处理PKCS#7格式,例如OpenSSL、Bouncy Castle等。这些库提供了创建、解析和验证PKCS#7对象的API,使得开发者能够方便地实现数据签名、加密和解密功能。 对于中文文档,有道...

Global site tag (gtag.js) - Google Analytics