Os códigos de criptografia e descriptografia simétricos de AES são introduzidos em detalhes para sua referência. O conteúdo específico é o seguinte
pacote demo.security; importar java.io.ioException; importar java.io.unsupportEdEncodingException; importar java.security.invalidKeyException; importação java.security.nosuchalgorithMexception; import java.security.securendom; importação; javax.crypto.badpaddingException; importar javax.crypto.cipher; importar javax.crypto.illegalblocksizeException; importar javax.crypto.keygenerator; import javax.crypto.nosuchpaddingException; import javax.ryspto.rycret; javax.crypto.spec.secretkeyspec; importar sun.misc.base64decoder; importar sun.misc.base64encoder;/** aes criptografia simétrica e descripto. Gere a chave * 4. Crie e inicialize a senha * 5. Criptografia de conteúdo * 6. Retorne a string */public static string aesencode (string coderules, string content) {try {// 1. Construir o gerador de chaves, especificado como o algoritmo AES, e é insensível ao caso KeyGenerator keygen = keyGenerator.getInstance ("AES"); // 2. Inicialize o gerador-chave de acordo com a regra dos ecnoderules // gera uma fonte aleatória de 128 bits e, de acordo com a matriz de bytes aprovada keygen.init (128, new SecureRandom (coderules.getBytes ())); // 3. Gerar a chave simétrica original secretKey original_key = keygen.gereateKey (); // 4. Obtenha a matriz de bytes do byte de chave simétrica original [] RAW = original_KEKE.GETENCODED (); // 5. Gerar a chave AES a partir da matriz de bytes SecretKey key = new SecretKeyspec (Raw, "Aes"); // 6. De acordo com o algoritmo especificado AES AES gerou o criptor cifra cifra = cipher.getInstance ("aes"); // 7. Inicialize o criptor, o primeiro parâmetro é a criptografia (Encrypt_mode) ou a operação de descriptografia e descriptografia (decrypt_mode), e o segundo parâmetro é a chave usada cipher.init (cipher.encrypt_mode, chave); // 8. Obtenha a variedade de bytes de conteúdo criptografado (ele precisa ser definido como UTF-8 aqui). Caso contrário, se houver um chinês e inglês misto no conteúdo, ele será descriptografado em um byte de código iluminado [] byte_encode = content.getbytes ("utf-8"); // 9. De acordo com o método de inicialização da cifra-criptografia: criptografar o byte de dados [] byte_aes = cipher.dofinal (byte_encode); // 10. Converter os dados criptografados em uma string // O pacote não será encontrado no Base64Encoder aqui // Solução: // remove primeiro remove a biblioteca do sistema JRE no caminho de construção do projeto e, em seguida, adiciona a biblioteca de sistemas JRE da biblioteca, tudo vai bem após a recompilação. String aes_encode = new String (new Base64Encoder (). Encode (byte_aes)); // 11. Retorne a string para retornar aes_encode; } catch (nosuchalgorithMexception e) {e.printStackTrace (); } catch (nosuchpaddingException e) {e.printStackTrace (); } catch (invalidKeyException e) {e.printStackTrace (); } catch (ilegalBlockSizeException e) {E.printStackTrace (); } catch (badpaddingException e) {e.printStackTrace (); } Catch (UnsupportEdEncodingException e) {E.PrintStackTrace (); } // Se houver algum erro, adicione o retorno nulo NULL; } /** Decripto* Processo de descriptografia:* 1. As mesmas etapas de criptografia 1-4* 2. Inverse girou a corda criptografada em uma matriz de byte []* 3. Descepto o conteúdo criptografado* /public static string aesdncode (codificadores de string, conteúdo de string) {Try {// 1. Construir o gerador de chaves, especifique -o como um algoritmo AES e não é sensível ao caso keyGenerator keygen = keyGenerator.getInstance ("AES"); // 2. Inicialize o gerador-chave de acordo com a regra dos ecnoderules // gera uma fonte aleatória de 128 bits e, de acordo com a matriz de bytes aprovada keygen.init (128, new SecureRandom (coderules.getBytes ())); // 3. Gerar a chave simétrica original secretKey original_key = keygen.gereateKey (); // 4. Obtenha a matriz de bytes do byte de chave simétrica original [] RAW = original_KEKE.GETENCODED (); // 5. Gerar a chave AES com base na matriz de bytes secretKey key = new SecretKeyspec (Raw, "Aes"); // 6. De acordo com o algoritmo especificado AES AES formador de cifra, cifra cifra = cifra.getInstance ("aes"); // 7. Inicialize a cifra, o primeiro parâmetro é a operação de criptografia (Encrypt_mode) ou descriptografar (Decrypt_mode), e o segundo parâmetro é a chave cifra.init (cipher.decrypt_mode, chave); // 8. Decodificar o conteúdo criptografado e codificado em uma matriz de bytes byte [] byte_content = new base64decoder (). Decodebuffer (content); /** Descriptografando*/ byte [] byte_decode = cipher.dofinal (byte_content); String aes_decode = new String (BYTE_DECODE, "UTF-8"); retornar aes_decode; } catch (nosuchalgorithMexception e) {e.printStackTrace (); } catch (nosuchpaddingException e) {e.printStackTrace (); } catch (invalidKeyException e) {e.printStackTrace (); } catch (ioexception e) {e.printStackTrace (); } catch (ilegalBlockSizeException e) {E.printStackTrace (); } catch (badpaddingException e) {e.printStackTrace (); } // Se houver algum erro, adicione o retorno nulo NULL; } public static void main (string [] args) {symmetRifencoder SE = new SymmetRifencoder (); Scanner Scanner = New Scanner (System.in); /** Criptografia*/ System.out.println ("Use criptografia simétrica AES, digite as regras de criptografia"); String coderules = scanner.Next (); System.out.println ("Por favor, insira o conteúdo a ser criptografado:"); String content = scanner.Next (); System.out.println ("De acordo com a regra de entrada"+coderules+"O CipherText criptografado é:"+SE.AESENCODE (coderules, conteúdo)); /** Decrypt*/ System.out.println ("Use descriptografia simétrica do AES, digite as regras de criptografia: (deve ser o mesmo que criptografia)"); coderules = scanner.Next (); System.out.println ("Por favor, insira o conteúdo a ser descriptografado (CipherText):"); content = scanner.Next (); System.out.println ("De acordo com as regras de entrada"+coderules+"O texto simples descriptografado é:"+SE.AESDNCODE (coderules, conteúdo)); }} Resultados do teste:
Use criptografia simétrica AES, digite as regras de criptografia. Use criptografia simétrica AES. Por favor, insira o conteúdo que deseja criptografar:
Use a criptografia simétrica AES O CipherText criptografado é: z0nwrnphgxhn0cqjls58ycjhmcbfer33rws7lw+ay =
Use descriptografia simétrica do AES, digite as regras de criptografia: (deve ser o mesmo que criptografia)
Use a criptografia simétrica do AES para inserir o conteúdo (CipherText):
Z0nwrnphghgxhn0cqjls58ycjhmcbfer33rws7lw+ay =
O texto simples descriptografado usando a criptografia simétrica AES de acordo com as regras de entrada é: Use a criptografia simétrica AES
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.