我是菜鸟:java密码学的应用

本文介绍了Java Cryptography Architecture (JCA) 的核心概念和实现,包括加密服务提供者、Engine Classes如SecureRandom、MessageDigest、Signature、Cipher等。通过示例展示了如何生成随机数、消息摘要、数字签名和加密解密数据。同时讨论了密钥管理和算法参数的使用。
摘要由CSDN通过智能技术生成

下面是阅读 Java Cryptography Architecture(JCA) Reference Guide的一些笔记

Architecture

java 安全体系的结构
- Cryptographic Service Providers (加密服务提供者)
java.security.Provider 是所有安全服务提供者的基类,每一个CSP实例都包含了provider的名字和它实现了所有算法的名字。当需要一个特定算法的实例时,JCA就会查询provider,如果找到就返回相应的实例。
每个JDK安装了一个或者多个provider,需要更多的provider需要自己安装。
当在应用程序中使用JCA时,仅仅需要一个特定的对象和一个特定的算法/服务。例如MessageDigest对象中的MD5算法。这样便可以获得一个实例。对于provider的选取要么选择优先级最高的那个(如果没有指定具体的算法),要么选择指定的provider。
- provider的实现过程
每个引擎类提供的应用API都被实现相应SPI(Service Provider Interface)的类路由到provide的具体实现中。每一个引擎类都对应一个SPI。
调用过程:
假设需要使用AES算法。
.应用程序 调用 getInstance() 获得cipher 引擎类。
. cipher 引擎类要求JAC框架找到第一个满足AES的provider.
. JCA 框架查询所有的provider并且返回其中合适的一个provider.
. 然后provider找到相应的实现类,并创建实例和返回。
2. 密钥管理
keystore 可用来管理密钥和证书,它实现了java.security.KeyStore 类,应用程序可以向它请求数据用于认证、加密或者签名等。

JCA概念

Engine Classes

An engine class provides the interface to a specific type of cryptographic service, independent of a particular cryptographic algorithm or provider.

一些引擎类

  1. SecureRandom: 用来生成随机数。
  2. MessageDigest: 用来生成消息摘要(hash)和一些特定的数据
  3. Signature: 使用密钥初始化用来签名数据和验证数字签名。
  4. Cipher: 使用密钥初始化后用来加密、解密数据。包括例如对称分块加密(AES,DES,DESede,Blowfish, IDEA),流密码(RC4),非对称加密(RSA)以及基于密码的加密(PBE)
  5. Message Authentication Codes (MAC): 例如MessageDigests, 产生带密钥的hash值
    6.KeyFactory: 用来转化现存的不透明的密钥到一个特殊格式。vice versa(反之亦然)。
  6. SecretKeyFactory: 与6类似,其是6的特例,只能用于对称密钥。
  7. KeyPairGenerator: 用来生成一组公私钥对。
  8. KeyGenerator: used to generate new secret keys for use with a specified algorithm.
  9. KeyAgreement:用特定的算法来进行密钥协商。
  10. AlgorithmParameters: 用来存储特定算法的相应参数包括加密解密的参数。u
  11. AlgorithmParameterGenerator :
  12. KeyStore: used to create and manage a keystore. A keystore is a database of keys. Private keys in a keystore have a certificate chain associated with them, which authenticates the corresponding public key. A keystore also contains certificates from trusted entities.
  13. CertificateFactory: used to create public key certificates and Certificate Revocation Lists (CRLs).
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值