A criptografia simétrica Java é implementada usando os algoritmos DES/3DES/AES.
Existem duas frases que dizem o seguinte:
1) Algoritmos e estruturas de dados são uma parte importante da programação.
2) A programação são algoritmos e estruturas de dados, e algoritmos e estruturas de dados são a alma da programação.
Observe que não é o que eu disse, foi resumido por inúmeros programadores. Inclui três algoritmos de criptografia simétrica: DES, 3DES e AES, e está cheia de informações práticas.
1. Algoritmo de senha simétrica
O algoritmo de criptografia simétrica é o algoritmo de criptografia mais amplamente utilizado e usado hoje. Não é usado apenas na indústria de software, mas também popular na indústria de hardware. Todos os tipos de infraestruturas darão prioridade aos algoritmos de criptografia simétrica sempre que envolverem necessidades de segurança.
A chave de criptografia e a chave de descriptografia do algoritmo de criptografia simétrica são as mesmas.
(1) Criptografar e descriptografar o modelo de comunicação
(2) Recursos: Algoritmo aberto, volume de cálculo pequeno, velocidade de criptografia rápida, alta eficiência de criptografia
(3) Fraqueza: ambas as partes usam a mesma chave e a segurança não é garantida
Existem dois tipos de senhas simétricas: senha de transmissão e senha do pacote, mas agora a senha de bloco é comumente usada:
(4) Bloquear o modo de funcionamento da senha
1) BCE: CipherBook eletrônico (o mais comumente usado, cada criptografia gera pacotes de cifra de texto independente e não afetarão outros pacotes de texto cifra, ou seja, o mesmo texto simples é gerado após a criptografia)
2) CBC: Link CipherText (comumente usado. Antes da criptografia de texto simples, você precisa executar a operação XOR com o CipherText anterior, ou seja, diferentes textos cifrões são gerados após a mesma criptografia de texto simples)
Além desses dois modos de trabalho comumente usados, existem:
3) CFB: feedback da senha
4) OFB: Feedback de saída
5) CTR: Contador
Esses cinco modos de trabalho são aplicados principalmente por algoritmos na criptografia ao realizar cálculos de derivação.
6. Como preencher senhas de bloco
1) Nopadding: sem preenchimento
2) PKCS5Padding:
3) ISO10126Padding:
7. Senhas simétricas comumente usadas:
1) DES (padrão de criptografia de dados, padrão de criptografia de dados)
2) 3des (Triple des, desede, algoritmo de criptografia triplo des um)
3) AES (padrão avançado de criptografia, padrão de criptografia de dados avançado, o algoritmo AES pode resistir efetivamente aos algoritmos de ataque contra des)
Vamos primeiro dar uma olhada em uma comparação simples desses três algoritmos:
| algoritmo | Comprimento da chave | Comprimento da chave padrão | Modo de trabalho | Método de enchimento |
|---|---|---|---|---|
| Des | 56 | 56 | BCE, CBC, PCBC, CTR, CTS, CFB, CFB8-CFB128, OFB, OFB8-OFB128 | Nopadding, PKCS5Padding, ISO10126Padding |
| 3des | 112, 168 | 168 | BCE, CBC, PCBC, CTR, CTS, CFB, CFB8-CFB128, OFB, OFB8-OFB128 | Nopadding, PKCS5Padding, ISO10126Padding |
| Aes | 128, 192, 256 | 128 | BCE, CBC, PCBC, CTR, CTS, CFB, CFB8-CFB128, OFB, OFB8-OFB128 | Nopadding, PKCS5Padding, ISO10126Padding |
Vamos ver como usar três algoritmos de DES/3DES/AES para implementar a criptografia simétrica:
2. DES Algoritmo
1.DES: Padrão de criptografia de dados, um algoritmo típico no campo de algoritmos de criptografia simétrica
2.
3. Implementação de Java
1) Gere uma chave
KeyGenerator keygen = keyGenerator.getInstance ("des"); // gerador de chaves keygen.init (56); // inicialize o gerador -chave secretKey SecretKey = keygen.generateKey (); // gerar o chave de chave [] key = secretKey.getEncoded (); // Chave Byte Array2) criptografia
SecretKeyKey = New SecretKeyspec (Key, "des"); // Recupere a cifra -chave da cifra = cifra.getInstance ("des"); // cifra completa a criptografia ou descriptografia e a Cipher.Init (cifra) (secretKeTeTeTeTeTeTeTeTeT); dados3) Decripção
SecretKeyKey = New SecretKeyspec (Key, "des"); // Recupere a cifra -chave da cifra = cifra.GetInstance ("DES"); // cifra completa a criptografia ou descriptona) a Cipher s dadosPodemos descobrir que apenas definimos modos diferentes para criptografia e descriptografia.
Algoritmo 3.3DES
1.3DES: Aumente o comprimento da chave para 112 ou 168 bits e melhore a segurança aumentando o número de iterações.
2. Desvantagens: velocidade de processamento lenta, tempo de cálculo de chaves longos e baixa eficiência da criptografia
3. Implementação de Java
1) Gere uma chave
KeyGenerator keygen = keyGenerator.getInstance ("desede"); // Key Gerator keygen.init (168);2) Criptografia 3DES
SecretKeyKey = New SecretKeyspec (Key, "Desede"); // Recupere a cifra -chave da cifra = cifra.getInstance ("desede"); // cifra completa a criptografia ou descriptografia de cipher de cipher.init (cipReyte Rypts dados3) Descriptografia de 3des
SecretKeyKey = New SecretKeyspec (Key, "Desede"); // Recupere a cifra -chave da cifra = cifra.getInstance ("Desede"); // cifra completa a criptografia ou descriptografia de cifra da classe de trabalho (cipher.decrypt_mode, cifra de cipra, cipra, cipra. Descriptografar dados4. Algoritmo AES (recomendado)
1.AES: Padrão de criptografia de dados avançados, capaz de resistir efetivamente a todos os ataques conhecidos contra os algoritmos DES
2.
3. Implementação de Java
1) Gere uma chave
KeyGenerator keygen = keyGenerator.getInstance ("AES"); // Key Generator keygen.init (128);2) Criptografia AES
SecretKeyKey = New SecretKeyspec (Key, "Aes"); // CIPHER CIPHER CIPHER = Cipher.getInstance ("Aes"); // cifra completa a criptografia ou descriptografia da Cipher Rypts dados3) Decripção de AES
SecretKeyKey = New SecretKeyspec (Key, "Aes"); // Recupere a cifra -chave da cifra = cifra.GetInstance ("Aes"); // cifra completa a criptografia ou descriptografia de cifra da classe de trabalho (cipher.decrypt_mode); Descriptografar dadosPor conveniência, escrevi aula de ferramentas para algoritmos DES/3DES/AES.
Endereço: http://xiazai.vevb.com/201701/yuanma/android-utilslibrary-master(VEVB.com).rar (Adicionada classe de ferramentas DES/3DES/AES).
Neste ponto, os três algoritmos de DES/3DES/AES são todos feitos para implementar a criptografia simétrica.
Obrigado pela leitura, espero que isso possa ajudá -lo.