Java中的密码学。 密钥对类

哈Ha! 我向您介绍了Jakob Jenkov撰写的6、7和8篇文章的翻译, 这些文章是为那些希望学习Java密码学基础知识的初学者编写的。


目录:


  1. Java密码学
  2. Java密码
  3. 留言摘要
  4. Mac电脑
  5. 签章
  6. 密钥对
  7. 密钥生成器
  8. 密钥对生成器
  9. 密钥库
  10. 按键工具
  11. 证明书
  12. 证书工厂
  13. 证书路径

密钥对


KeyPair类( java.security.KeyPair )是一对非对称密钥(公共密钥+私有密钥)。 KeyPair实例通常用于非对称加密(数据加密或签名)中。 通常,KeyPair实例是从Java密钥库或KeyPairGenerator获得的,本文稍后将对此进行讨论。


公钥访问


您可以通过调用KeyPair实例的getPublic()方法来访问其公钥。 获取公共密钥的示例:


PublicKey publicKey = keyPair.getPublic(); 

私钥访问


您还可以通过调用其实例的getPrivate()方法来访问其实例的私钥。 这是获取私钥的示例:


 PrivateKey privateKey = keyPair.getPrivate(); 

密钥生成器


KeyGenerator类( javax.crypto.KeyGenerator )用于生成对称加密密钥。 对称加密密钥是用于使用对称加密算法加密和解密数据的密钥。


创建KeyGenerator的实例


必须先创建KeyGenerator的实例,然后才能使用KeyGenerator类。 通过调用静态方法getInstance()来创建KeyGenerator实例,该实例作为一个参数,该参数采用为其创建密钥的加密算法的名称。 这是创建KeyGenerator实例的示例:


 KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); 

本示例创建一个KeyGenerator实例,该实例可以为AES加密算法生成密钥。


KeyGenerator初始化


创建KeyGenerator实例后,必须对其进行初始化。 实例的初始化是通过调用init()方法来完成的。 KeyGenerator实例初始化示例:


 SecureRandom secureRandom = new SecureRandom(); int keyBitSize = 256; keyGenerator.init(keyBitSize, secureRandom); 

init()方法接受两个参数:密钥长度和密钥生成期间使用的SecureRandom


密钥生成


初始化KeyGenerator实例后,可以使用它来生成密钥。 密钥生成是通过调用generateKey()方法执行的。 这是生成对称密钥的示例:


 SecretKey secretKey = keyGenerator.generateKey(); 

密钥对生成器


KeyPairGenerator类( java.security.KeyPairGenerator )用于生成非对称密钥对。 一对非对称密钥由两个密钥组成:第一个密钥通常用于加密数据,第二个密钥用于解密使用第一个密钥加密的数据。


公钥和私钥


非对称密钥对最著名的类型是以下形式的密钥对:公钥+私钥。 私钥用于加密数据,公钥用于解密数据。 实际上,您还可以使用公钥加密数据,并使用私钥解密数据。 私钥通常是秘密的,公钥可能是所有人都知道的。 因此,如果杰克用他的私钥加密某些数据,那么拥有杰克公钥的任何人都可以解密它。


创建KeyPairGenerator的实例


要使用KeyPairGenerator,必须首先创建KeyPairGenerator类的实例。 通过调用getInstance()方法创建KeyPairGenerator的实例。 这是创建实例的示例:


 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA"); 

getInstance()方法接受要使用的加密算法的名称。 在此示例中,我们使用RSA算法。


初始化KeyPairGenerator


根据算法,您可能需要初始化KeyPairGenerator的实例。 KeyPairGenerator通过调用其initialize()方法进行初始化 。 KeyPairGenerator实例初始化示例:


 keyPairGenerator.initialize(2048); 

在此示例中,KeyPairGenerator初始化为生成2048位密钥。


密钥对生成


要使用KeyPairGenerator生成密钥对,将调用generateKeyPair()方法。 这是生成密钥对的示例:


 KeyPair keyPair = keyPairGenerator.generateKeyPair(); 

Source: https://habr.com/ru/post/zh-CN445560/


All Articles