Como baixar e usar cifras Java
Se você estiver procurando uma maneira de criptografar e descriptografar dados em Java, talvez queira usar cifras Java. As cifras Java são algoritmos de criptografia fornecidos pela estrutura Java Cryptography Extension (JCE). Neste artigo, explicaremos o que são cifras Java, por que você deve usá-las, como baixá-las e como usá-las em seu código.
O que são cifras Java e por que usá-las?
Cifras Java são algoritmos de criptografia que transformam texto simples (a mensagem original) em texto cifrado (a mensagem criptografada) e vice-versa. A criptografia é o processo de tornar os dados ilegíveis para pessoas não autorizadas, enquanto a descriptografia é o processo de restaurar os dados à sua forma original. A criptografia e a descriptografia são úteis para proteger a confidencialidade, integridade e autenticidade dos dados.
download java ciphers
Download File: https://urlcod.com/2vS84X
Extensão de Criptografia Java (JCE)
As cifras Java fazem parte da estrutura Java Cryptography Extension (JCE), que é uma extensão da Java Cryptography Architecture (JCA). A estrutura JCE fornece um conjunto de cifras criptográficas para criptografia, descriptografia e hash de dados. A estrutura JCE também oferece suporte a vários tipos de chave, geradores de chave, fábricas de chave, especificações de chave, acordos de chave, certificados, fábricas de certificado, caminhos de certificado, validadores de caminho de certificado, construtores de caminho de certificado, geradores de números aleatórios seguros, parâmetros de algoritmo, geradores de parâmetro de algoritmo, especificações de parâmetro de algoritmo e algoritmos MAC.
Classe de Cifra e Transformação
A classe principal da estrutura JCE é a Cifra classe, localizada no javax.crypto pacote. O Cifra class fornece a funcionalidade para criptografia e descriptografia usando diferentes algoritmos. Para criar um Cifra exemplo, você precisa chamar o static getInstance e passe o nome da transformação solicitada.Uma transformação é uma string que descreve a operação (ou conjunto de operações) a ser executada na entrada fornecida. Uma transformação sempre inclui o nome de um algoritmo criptográfico (por exemplo, AES) e pode ser seguida por um modo de feedback e esquema de preenchimento. Uma transformação é da forma:
"algoritmo/modo/preenchimento" ou "algoritmo"
Por exemplo, o seguinte é uma transformação válida:
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
Isso significa que o Cifra A instância usará o algoritmo AES com modo de operação CBC e esquema de preenchimento PKCS5.
Modos de cifra e esquemas de preenchimento
Um modo de cifra é uma maneira de aplicar um algoritmo de cifra de bloco a um fluxo de dados. Um algoritmo de cifra de bloco opera em blocos de dados de tamanho fixo, enquanto um algoritmo de cifra de fluxo opera em bits ou bytes individuais. Um modo de cifra pode converter uma cifra de bloco em uma cifra de fluxo usando diferentes técnicas para combinar os blocos. Alguns modos de cifra comuns são ECB (Electronic Code Book), CBC (Cipher Block Chaining), CFB (Cipher Feedback), OFB (Output Feedback), CTR (Counter) e GCM (Galois/Counter Mode).
Um esquema de preenchimento é uma maneira de preencher o último bloco de dados para corresponder ao requisito de tamanho de bloco do algoritmo de cifra de bloco. Por exemplo, se o tamanho do bloco for de 128 bits e o último bloco tiver apenas 96 bits, precisamos preencher 32 bits para completá-lo. Alguns esquemas de preenchimento comuns são PKCS5Padding, PKCS7Padding, NoPadding, ZeroPadding, ISO10126Padding, etc.
Como baixar cifras Java
O JDK padrão O JDK padrão vem com um conjunto limitado de cifras criptográficas devido a restrições de exportação. Para usar cifras mais fortes, você precisa fazer download e instalar os Arquivos de Política de Jurisdição de Força Ilimitada Java Cryptography Extension (JCE). Esses arquivos estão disponíveis no site da Oracle para diferentes versões do Java. Você precisa baixar os arquivos que correspondem à sua versão do JDK. Fazendo download dos arquivos de política de jurisdição de força ilimitada Java Cryptography Extension (JCE)
Para fazer download dos arquivos de política JCE, siga estas etapas:
Acesse o site da Oracle e selecione a versão do JDK que você está usando.
Aceite o contrato de licença e clique no link de download dos arquivos de política JCE. O nome do arquivo deve ser algo como jce_policy-8.zip.
Salve o arquivo em sua máquina local e extraia-o. Você deve ver dois arquivos: local_policy.jar e US_export_policy.jar.
Instalando os arquivos de política JCE
Para instalar os arquivos de política JCE, siga estas etapas:
Localize o jre/lib/security diretório de sua instalação do JDK. Por exemplo, se seu JDK estiver instalado em C:\Arquivos de Programas\Java\jdk1.8.0_291, então o diretório deve ser C:\Arquivos de Programas\Java\jdk1.8.0_291\jre\lib\security.
Faça backup do original local_policy.jar e US_export_policy.jar arquivos nesse diretório, renomeando-os ou movendo-os para outro local.
Copie o baixado local_policy.jar e US_export_policy.jar arquivos para o jre/lib/security diretório, substituindo os arquivos originais.
Reinicie seu aplicativo Java ou IDE para aplicar as alterações.
Listando os algoritmos de cifra disponíveis
Para verificar se os arquivos de política JCE estão instalados corretamente e para ver quais algoritmos de codificação estão disponíveis, você pode usar o seguinte trecho de código:
importar java.security.Provider; importar java.security.Security; importar java.util.TreeSet; public class ListCiphers public static void main(String[] args) // Obtenha todos os provedores Provider[] provider = Security.getProviders(); // Cria um conjunto classificado de nomes de cifras TreeSet cifras = new TreeSet(); // Percorra os provedores e obtenha seus serviços de cifra for (Provider provider : provider) for (Provider.Service service : provider.getServices()) if (service.getType().equals("Cipher")) // Adicione o nome da cifra ao conjunto ciphers.add(service.getAlgorithm()); // Imprime os nomes das cifras para (String cipher : ciphers) System.out.println(cipher);
Este código imprimirá uma lista de nomes cifrados, como AES, DES, RSA, etc. Você pode usar qualquer um desses nomes como parte do algoritmo da transformação ao criar um Cifra instância.
Como usar cifras Java
Para usar cifras Java em seu código, você precisa seguir estas etapas:
Criar uma Cifra instância com uma transformação.
Inicialize o Cifra com uma chave e um modo de operação (criptografia ou decriptação).
Criptografe ou descriptografe dados com o Cifra.
Criando uma instância de cifra
Para criar um Cifra exemplo, você precisa chamar o static Cipher.getInstance método e passe o nome da transformação. Por exemplo, para criar um Cifra instância que usa o algoritmo AES com modo CBC e preenchimento PKCS5, você pode escrever:
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
Inicializando uma cifra com uma chave e um modo de operação
Para inicializar um Cifra, você precisa ligar para um de seus iniciar métodos e passar uma chave e um modo de operação. A chave é um objeto que implementa o Chave interface, como um Chave secreta, a Chave pública, ou um Chave privada. O modo de operação é uma das constantes definidas no Cifra classe O modo de operação é uma das constantes definidas no Cifra classe, como Cipher.ENCRYPT_MODE, Cipher.DECRYPT_MODE, Cipher.WRAP_MODE, ou Cipher.UNWRAP_MODE. Dependendo do modo de cifra, você também pode precisar passar um AlgoritmoParameterSpec objeto que contém os parâmetros para a cifra, como um vetor de inicialização (IV) ou um nonce. Por exemplo, para inicializar um Cifra instância para criptografia com uma chave secreta e um IV aleatório, você pode escrever:
// Gera uma chave secreta SecretKey key = KeyGenerator.getInstance("AES").generateKey(); // Cria um IV aleatório SecureRandom random = new SecureRandom(); byte[] iv = novo byte[16]; // 16 bytes para AES random.nextBytes(iv); // Cria uma especificação de parâmetro IV IvParameterSpec ivSpec = new IvParameterSpec(iv); // Inicializa a cifra para criptografia cipher.init(Cipher.ENCRYPT_MODE, key, ivSpec);
Criptografia e descriptografia de dados com uma cifra
Para criptografar ou descriptografar dados com um Cifra, você precisa ligar para um de seus doFinal métodos e passar os dados de entrada como uma matriz de bytes. O doFinal O método retornará os dados de saída como uma matriz de bytes. Por exemplo, para criptografar uma mensagem de texto simples e descriptografá-la de volta, você pode escrever:
// Criptografa o texto simples String texto simples = "Hello, world!"; byte[] texto cifrado = cipher.doFinal(texto simples.getBytes()); // Inicializa a cifra para descriptografia cipher.init(Cipher.DECRYPT_MODE, key, ivSpec); // Descriptografar o texto cifrado byte[] descriptografado = cipher.doFinal(ciphertext); String decryptedText = new String(descriptografado); // Imprime os resultados System.out.println("Texto simples: " + texto simples); System.out.println("Ciphertext: " + Base64.getEncoder().encodeToString(ciphertext)); System.out.println("Descriptografado: " + decryptedText);
Este código imprimirá algo como:
Texto simples: Olá, mundo! Texto cifrado: 2Zy0ZwY8JQ+4cRj0s1wz6A== Descriptografado: Olá, mundo!
Conclusão
Neste artigo, aprendemos o que são cifras Java, por que devemos usá-las, como baixá-las e como usá-las em nosso código. Vimos como criar um Cifra instância com uma transformação, como inicializá-la com uma chave e um modo de operação e como criptografar e descriptografar dados com ela.Também aprendemos sobre a estrutura JCE, os modos de cifra e os esquemas de preenchimento. As cifras Java são ferramentas poderosas para proteger dados em aplicativos Java.
perguntas frequentes
Qual é a diferença entre cifras simétricas e assimétricas?
As cifras simétricas usam a mesma chave para criptografar e descriptografar, enquanto as cifras assimétricas usam chaves diferentes (uma chave pública e uma chave privada) para criptografar e descriptografar. As cifras simétricas são mais rápidas e simples do que as cifras assimétricas, mas exigem uma maneira segura de compartilhar a chave. As cifras assimétricas são mais lentas e complexas do que as cifras simétricas, mas não requerem uma maneira segura de compartilhar a chave.
Quais são alguns exemplos de cifras simétricas e assimétricas?
Alguns exemplos de cifras simétricas são AES, DES, RC4, etc. Alguns exemplos de cifras assimétricas são RSA, ECC, DSA, etc.
Como posso gerar uma chave aleatória segura para criptografia?
Você pode usar o KeyGenerator aula no javax.crypto pacote para gerar uma chave aleatória segura para criptografia. Você precisa especificar o nome do algoritmo e, opcionalmente, o tamanho da chave ao criar um KeyGenerator instância. Então você pode ligar para o gerarKey método para obter um Chave secreta objeto.
Como posso converter uma matriz de bytes em uma string hexadecimal ou em uma string base64?
Você pode usar o DatatypeConverter aula no javax.xml.bind pacote ou o Base64 aula no java.util pacote para converter uma matriz de bytes em uma string hexadecimal ou em uma string base64. Por exemplo:
// Converte uma matriz de bytes em hexadecimal // Converte uma matriz de bytes em uma string hexadecimal String hex = DatatypeConverter.printHexBinary(byteArray); // Converte um array de bytes em uma string base64 String base64 = Base64.getEncoder().encodeToString(byteArray);
Como posso converter uma string hexadecimal ou uma string base64 em uma matriz de bytes?
Você pode usar o DatatypeConverter aula no javax.xml.bind pacote ou o Base64 aula no java.util pacote para converter uma string hexadecimal ou uma string base64 em uma matriz de bytes. Por exemplo:
// Converte uma string hexadecimal em uma matriz de bytes byte[] byteArray = DatatypeConverter.parseHexBinary(hex); // Converte uma string base64 em um array de bytes byte[] byteArray = Base64.getDecoder().decode(base64);
0517a86e26
Comments