Existem duas frases que dizem o seguinte:
1) Algoritmos e estruturas de dados são uma parte importante da programação. Se você perder os algoritmos e estruturas de dados, perderá tudo.
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 foi o que eu disse, foi resumido por inúmeros programadores. É muito realista e perspicaz. Se você deseja se desenvolver continuamente por um longo tempo, ainda é necessário estudar mais algoritmos. Hoje vou falar sobre os algoritmos de criptografia simétrica nos algoritmos de criptografia, e aqui eu ensinarei a programação e o uso de algoritmos de criptografia simétrica. 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 priorizarão os 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. Para a maioria dos algoritmos de criptografia simétrica, o processo de criptografia e descriptografia está inversamente relacionado.
(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 terão nenhum impacto em outros pacotes de cifra de texto, 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. Método de preenchimento de senha 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 os algoritmos 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
SecretKey SecretKey = New SecretKeyspec (Key, "des"); // Recupere a cifra -chave da cifra = cifra.getInstance ("des"); // cifra completa criptografia ou descriptografia da classe trabalhadora cipher.init (cipher.encrypt_mode, [SecretKey); // inicializa cipher.init, conscurso (cifra. cipher.Dofinal (dados); // Encrypts Data3) Decripção
SecretKey SecretKey = novo secretKeyspec (Key, "des"); // Recupere a cifra -chave da cifra = cifra.getInstance ("des"); // cifra completa criptografia ou descriptografia de cipher.init.init (cifra.decrypt_mode, [SecretKey); // Inicializa ciprept, descrevê -las (cifra.decrypt_mode, [SecretKey); // Inicializa cipret, cipher.Dofinal (dados); // Decriptografa os 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 Generator keygen.init (168); // O comprimento da chave pode ser especificado como 112 ou 168, e o padrão é 168 SecretKey SecretKey = keygen.GeReReKey (); // Gere Key Byte [] key = secretKey.getEncoded (); // Chave Byte Array2) Criptografia 3DES
SecretKey SecretKey = novo secretKeyspec (Key, "Desede"); // Recupere a cifra -chave da cifra = cifra.getInstance ("desede"); // cifra completa criptografia ou descriptografia da classe trabalhadora cipher.init (cipher.Encrypt_mode, secretKey); cipher.Dofinal (dados); // Encrypts Data3) Descriptografia de 3des
SecretKeyKey = New SecretKeyspec (Key, "Desede"); // Recupere a cifra -chave da cifra = cifra.getInstance ("desede"); // cifra completa a criptografia ou descriptografia da classe trabalhadora cipher.init (cipher.decrypt_mode, [SecretKey]; cipher.Dofinal (dados); // Decriptografa os 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); // Padrão 128, depois de não obter permissões políticas, pode ser 192 ou 256SecretKey SecretKey = keygen.GeRekeKey (); // gerar BYTE KEY [] key = secretKey.getEncoded (); // Array de Byte de chave2) Criptografia AES
SecretKey SecretKey = New SecretKeyspec (Key, "Aes"); // Recupere a cifra -chave da cifra = cifra.getInstance ("aes"); // cifra completa criptografia ou descriptografia da classe trabalhadora cipher.init (cipher.Encrypt_mode, [SecretKey); // Inicializa cipher, cipher, cipher.init (cipher.Encrypt_mode, [SecretKey); cipher.Dofinal (dados); // Encrypts Data3) Decripção de AES
SecretKeyKey = new SecretKeyspec (Key, "Aes"); // Recupere a cifra -chave da cifra = cifra.getInstance ("aes"); // cifra completa a criptografia ou descriptografia da classe trabalhadora cipher.init (cipher.decrypt_mode, bytey); cipher.Dofinal (dados); // Decriptografa os dadosPor conveniência de uso, eu escrevi classes de ferramentas para algoritmos DES/3DES/AES, Endereço: Endereço de download (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. Espero que seja útil para o aprendizado de todos, e espero que todos apoiem mais o wulin.com.