Criptografia Java - criptografando dados
Você pode criptografar dados fornecidos usando a classe Cipher do javax.cryptopacote. Siga as etapas fornecidas a seguir para criptografar dados fornecidos usando Java.
Etapa 1: Crie um objeto KeyPairGenerator
o KeyPairGenerator classe fornece getInstance() método que aceita uma variável String que representa o algoritmo de geração de chave necessário e retorna um objeto KeyPairGenerator que gera chaves.
Crio KeyPairGenerator objeto usando o getInstance() método conforme mostrado abaixo.
//Creating KeyPair generator object
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("DSA");
Etapa 2: inicializar o objeto KeyPairGenerator
o KeyPairGenerator classe fornece um método chamado initialize()este método é usado para inicializar o gerador de par de chaves. Este método aceita um valor inteiro que representa o tamanho da chave.
Inicialize o objeto KeyPairGenerator criado na etapa anterior usando o initialize() método conforme mostrado abaixo.
//Initializing the KeyPairGenerator
keyPairGen.initialize(2048);
Etapa 3: gerar o KeyPairGenerator
Você pode gerar o KeyPair usando o generateKeyPair() método do KeyPairGeneratorclasse. Gere o par de chaves usando este método, conforme mostrado abaixo.
//Generate the pair of keys
KeyPair pair = keyPairGen.generateKeyPair();
Etapa 4: Obtenha a chave pública
Você pode obter a chave pública do KeyPair objeto usando o getPublic() método conforme mostrado abaixo.
Obtenha a chave pública usando este método conforme mostrado abaixo.
//Getting the public key from the key pair
PublicKey publicKey = pair.getPublic();
Etapa 5: Criar um objeto Cipher
o getInstance() método de Cipher classe aceita uma variável String que representa a transformação necessária e retorna um objeto Cipher que implementa a transformação fornecida.
Crie o objeto Cipher usando o getInstance() método conforme mostrado abaixo.
//Creating a Cipher object
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
Etapa 6: inicializar o objeto Cipher
o init() método do Cipher A classe aceita dois parâmetros, um parâmetro inteiro que representa o modo de operação (criptografar / descriptografar) e um objeto Key que representa a chave pública.
Inicialize o objeto Cypher usando o init() método conforme mostrado abaixo.
//Initializing a Cipher object
cipher.init(Cipher.ENCRYPT_MODE, publicKey);
Etapa 7: Adicionar dados ao objeto Cipher
o update() O método da classe Cipher aceita uma matriz de bytes que representa os dados a serem criptografados e atualiza o objeto atual com os dados fornecidos.
Atualize o objeto Cipher inicializado passando os dados para o update() método na forma de matriz de bytes, conforme mostrado abaixo.
//Adding data to the cipher
byte[] input = "Welcome to Tutorialspoint".getBytes();
cipher.update(input);
Etapa 8: criptografar os dados
o doFinal()método da classe Cipher completa a operação de criptografia. Portanto, conclua a criptografia usando este método conforme mostrado abaixo.
//Encrypting the data
byte[] cipherText = cipher.doFinal();
Exemplo
O programa Java seguinte aceita texto do usuário, criptografa-o usando o algoritmo RSA e imprime o formato criptografado do texto fornecido.
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.Signature;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
public class CipherSample {
public static void main(String args[]) throws Exception{
//Creating a Signature object
Signature sign = Signature.getInstance("SHA256withRSA");
//Creating KeyPair generator object
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA");
//Initializing the key pair generator
keyPairGen.initialize(2048);
//Generating the pair of keys
KeyPair pair = keyPairGen.generateKeyPair();
//Creating a Cipher object
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1Padding");
//Initializing a Cipher object
cipher.init(Cipher.ENCRYPT_MODE, pair.getPublic());
//Adding data to the cipher
byte[] input = "Welcome to Tutorialspoint".getBytes();
cipher.update(input);
//encrypting the data
byte[] cipherText = cipher.doFinal();
System.out.println(new String(cipherText, "UTF8"));
}
}
Resultado
O programa acima gera a seguinte saída -
Encrypted Text:
"???:]J_?]???;Xl??????*@??u???r??=T&???_?_??.??i?????(?$_f?zD??????ZGH??g???
g?E:_??bz^??f?~o???t?}??u=uzp\UI????Z??l[?G?3??Y?UAEfKT?f?O??N_?d__?????a_?15%?^?
'p?_?$,9"{??^??y??_?t???,?W?PCW??~??[?$??????e????f?Y-Zi__??_??w?_?&QT??`?`~?[?K_??_???