Criptografia em Java. Classe KeyPair

Olá Habr! Apresento a você a tradução de 6, 7 e 8 artigos de Jakob Jenkov de uma série de artigos para iniciantes que desejam aprender o básico da criptografia em Java.


Sumário:


  1. Criptografia Java
  2. Cifra Java
  3. Messagedigest
  4. Mac
  5. Assinatura
  6. Par de chaves
  7. Keygenerator
  8. KeyPairGenerator
  9. Keystore
  10. Keytool
  11. Certificado
  12. CertificateFactory
  13. CertPath

Par de chaves


A classe KeyPair ( java.security.KeyPair ) é um par de chaves assimétricas (chave pública + chave privada). Uma instância KeyPair é comumente usada em criptografia assimétrica (criptografia ou assinatura de dados). Normalmente, uma instância de KeyPair é obtida no armazenamento de chaves Java ou KeyPairGenerator, que será discutido mais adiante neste artigo.


Acesso Ă  chave pĂşblica


Você pode acessar a chave pública de uma instância do KeyPair chamando seu método getPublic () . Um exemplo de obtenção de uma chave pública:


PublicKey publicKey = keyPair.getPublic(); 

Acesso Ă  chave privada


Você também pode acessar a chave privada da instância KeyPair chamando seu método getPrivate () . Aqui está um exemplo de como obter uma chave privada:


 PrivateKey privateKey = keyPair.getPrivate(); 

Gerador de chaves


A classe KeyGenerator ( javax.crypto.KeyGenerator ) é usada para gerar chaves de criptografia simétricas. Uma chave de criptografia simétrica é uma chave usada para criptografar e descriptografar dados usando um algoritmo de criptografia simétrica.


Criando uma instância do KeyGenerator


Antes de poder usar a classe KeyGenerator, você deve criar uma instância do KeyGenerator. Uma instância de KeyGenerator é criada chamando o método estático getInstance () , como um parâmetro que leva o nome do algoritmo de criptografia para o qual a chave está sendo criada. Aqui está um exemplo de criação de uma instância do KeyGenerator:


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

Este exemplo cria uma instância do KeyGenerator que pode gerar chaves para o algoritmo de criptografia AES.


Inicialização do KeyGenerator


Após criar uma instância do KeyGenerator, você deve inicializá-la. A inicialização de uma instância é realizada chamando o método init () . Exemplo de inicialização da instância KeyGenerator:


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

O método init () usa dois parâmetros: o comprimento da chave e SecureRandom , que é usado durante a geração da chave.


Geração de chaves


Após inicializar a instância KeyGenerator, você pode usá-lo para gerar as chaves. A geração de chave é realizada chamando o método generateKey () . Aqui está um exemplo de geração de uma chave simétrica:


 SecretKey secretKey = keyGenerator.generateKey(); 

Gerador de par de chaves


A classe KeyPairGenerator ( java.security.KeyPairGenerator ) é usada para gerar pares de chaves assimétricos. Um par de chaves assimétricas consiste em duas chaves: a primeira chave geralmente é usada para criptografar dados e a segunda chave é usada para descriptografar dados criptografados com a primeira chave.


Chaves pĂşblicas e privadas


O tipo mais famoso de par de chaves assimétricas é o tipo de par de chaves da forma: chave pública + chave privada. A chave privada é usada para criptografar dados e a chave pública é usada para descriptografar dados. De fato, você também pode criptografar dados usando a chave pública e descriptografá-los usando a chave privada. A chave privada geralmente é mantida em segredo, e a chave pública pode ser conhecida por todos. Portanto, se Jack criptografa alguns dados com sua chave privada, qualquer pessoa que possua a chave pública de Jack pode descriptografá-la.


Criando uma instância do KeyPairGenerator


Para usar o KeyPairGenerator, você deve primeiro criar uma instância da classe KeyPairGenerator. Uma instância do KeyPairGenerator é criada chamando o método getInstance () . Aqui está um exemplo de criação de uma instância:


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

O método getInstance () aceita o nome do algoritmo de criptografia a ser usado. Neste exemplo, usamos o algoritmo RSA.


KeyPairGenerator de inicialização


Dependendo do algoritmo, pode ser necessário inicializar uma instância do KeyPairGenerator. KeyPairGenerator é inicializado chamando seu método initialize () . Exemplo de inicialização da instância KeyPairGenerator:


 keyPairGenerator.initialize(2048); 

Neste exemplo, um KeyPairGenerator Ă© inicializado para gerar chaves de 2048 bits.


Geração de par de chaves


Para gerar um par de chaves usando KeyPairGenerator, o método generateKeyPair () é chamado. Aqui está um exemplo de geração de pares de chaves:


 KeyPair keyPair = keyPairGenerator.generateKeyPair(); 

Source: https://habr.com/ru/post/pt445560/


All Articles