Java 加密算法体系结构
来源:互联网 发布:15年股灾真相知乎 编辑:程序博客网 时间:2024/06/01 10:42
加密API是Java基于java.security(及其子包)的API,用户能用密码学的概念(如数字签名和报文摘要),但又不必关心这些概念的实现甚至实现这些概念所用算法的 实现。
当不可能完全实现算法独立性时,JCA 将为开发人员提供标准的特定算法 API。当实现方法的独立性不可能实现时,JCA 将让开发人员指明所要求的特定实现方法。
加密算法很难,我研究了好长时间,最终还是放弃了。搞不懂那些这样那样的公式,还是只会用就好了。
Java提供了以下7种引擎类(截止Java6.0)
- MessageDigest — 用于计算数据的报文摘要(散列)。
- Signature — 用于对数据进行签名和校验数字签名。
- KeyPairGenerator — 用于生成与指定算法相匹配的公钥和私钥对。
- KeyFactory — 用于将类型为 Key(密钥)的不透明密钥转换为密钥规范(密钥信息的透明表示),反之亦然。
- CertificateFactory 用于创建公钥证书和证书撤消清单(CRL)。
- KeyStore — 用于创建和管理密钥仓库。密钥仓库是密钥的数据库。密钥仓库中的私钥有一个与之关联的证书链,用于认证对应的公钥。密钥仓库还含有来自可信实体的证书。
- AlgorithmParameters — 用于管理某一特定算法的参数,包括编码和解码参数。
- AlgorithmParameterGenerator — 用于生成一组与指定算法相匹配的参数。
- SecureRandom — 用于生成随机数或伪随机数。
每种引擎对应了一种或者几种加密算,获取对象的方法就是getInstance(算法名)。
Java已经实现的算法
1、MessageDigest 类
摘要算法类
提供的方法:
update(byte input)
即更新摘要 reset()重置数据;digest()
支持的算法:
SHA: 安全散列算法,在安全散列标准 NIST FIPS 180-1 中定义。
MD2: RFC 1319 中定义的 MD2 报文摘要算法。
MD5: RFC 1321 中定义的 MD5 报文摘要算法。
SHA1withDSA: 带 SHA-1 的 DSA 签名算法,它使用 SHA-1 digest 算法和 DSA 来创建和校验 FIPS PUB 186 中定义的 DSA 数字签名。
MD2withRSA: 带 RSA 的 MD2 加密签名算法,它使用 MD2 digest 算法和 RSA 来创建和校验 PKCS#1 中定义的 RSA 数字签名。
MD5withRSA: 带 RSA 的 MD5 加密签名算法,它使用 MD5 digest 算法和 RSA 来创建和校验 PKCS#1 中定义的 RSA 数字签名。
SHA1withRSA: 带 SHA-1 的签名算法和在“OSI 的互操作性研讨会”上定义的签名算法,它使用 PKCS #1 中说明的填充约定。
2、Signature 类
用来为应用程序提供数字签名算法功能。数字签名用于确保数字数据的验证和完整性。
在所有算法当中,数字签名可以是 NIST 标准的 DSA,它使用 DSA 和 SHA-1。可以将使用 SHA-1 消息摘要算法的 DSA 算法指定为 SHA1withDSA。如果使用 RSA,对消息摘要算法则会有多种选择,因此,可以将签名算法指定为 MD2withRSA、MD5withRSA 或SHA1withRSA。因为没有默认的算法名称,所以必须为其指定名称。
- 初始化,使用
- 初始化验证签名的公钥(请参见
initVerify
),或使用- 初始化签署签名的私钥(也可以选择“安全随机数生成器”),(请参见
initSign(PrivateKey)
和initSign(PrivateKey, SecureRandom)
)。- 更新
根据初始化类型,这可更新要签名或验证的字节。请参见
update
方法。- 签署或验证所有更新字节的签名。请参见
sign
方法和verify
方法。
3.、 KeyPairGenerator 类
KeyPairGenerator 类用于生成公钥和私钥对。密钥对生成器是使用
getInstance
工厂方法(返回一个给定类的实例的静态方法)构造的。有两种生成密钥对的方式:与算法无关的方式和特定于算法的方式。
4、KeyFactory 类
密钥工厂是双向的。也就是说,它们允许根据给定的密钥规范(密钥材料)构建不透明的密钥对象,也允许获取以恰当格式表示的密钥对象的底层密钥材料。
对于同一个密钥可以存在多个兼容的密钥规范。
5、CertificateFactory 类
只支持x.509国际标准证书
6、KeyStore 类
此类表示密钥和证书的存储设施。
KeyStore
管理不同类型的条目。每种类型的条目都实现KeyStore.Entry
接口7、AlgorithmParameters 类
此类用作密码参数的不透明表示形式。
可以通过调用
getInstance
工厂方法(返回给定类的实例的 static 方法)之一获取用于管理特定算法的参数的AlgorithmParameters
对象。8、AlgorithmParameterGenerator 类
AlgorithmParameterGenerator
类用于生成将在某个特定算法中使用的参数集合。参数生成器是使用getInstance
工厂方法(返回给定类的实例的 static 方法)构造的。可以使用以下两种方式初始化将生成参数的对象:与算法无关的方式或特定于算法的方式
9、SecureRandom 类
此类提供强加密随机数生成器(RNG)。
以上大部分翻译自官方文档,后面的东西今天懒的弄了,凑了下数,Java加密技术 推荐《Java加密与解密的艺术》。附:博客:http://snowolf.iteye.com/blog/379860
- Java 加密算法体系结构
- Java加密算法
- Java加密算法
- JAVA加密算法
- java加密算法
- java加密算法
- java加密算法
- java 加密算法
- Java 加密算法
- java加密算法
- java加密算法
- java加密算法
- java加密算法
- Java 加密算法
- Java加密算法
- Java加密算法
- Java体系结构
- java体系结构
- BIEE 11G控制台乱码解决
- Razor系列-使用MySql数据库就这么简单!
- edwrwr
- html中<button>与<input type="button">区别
- c#字符串加密与解密封装
- Java 加密算法体系结构
- 数据恢复软件设计与实现(一)
- phonegap for iOS插件例子
- 阻止android软键盘自动弹出
- 一道Java初始化面试题
- Linux的五个查找命令:find,locate,whereis,which,type
- Dubbo架构介绍
- Storyboard里面的几种Segue区别:push,modal,popover,replace和custom
- Disruptor一个开源的高效内存无锁队列