Ссылка код, написанный кем-то другим AES шифрования, запишите его

пакет org.jimmy.autosearch2019.test; 

импорт java.security.SecureRandom; 

импорт javax.crypto.Cipher;
импорт javax.crypto.KeyGenerator;
импорт javax.crypto.SecretKey;
импорт javax.crypto.spec.SecretKeySpec; 

общественный  класс TestAes2019052801 { 

    публичный  статический  аннулируются основной (String [] арг) {
         попробуйте { 
            содержание строк = "123456" ; 
            Строка SecretKey = "123456" ;
            байт [] encryptedContentBytes = шифровать (содержание, SecretKey); 
            Строка encryptedContent =parseBinaryToHexStr (encryptedContentBytes); 
            System.out.println ( "предварительно зашифрован текст:" + содержимое); 
            System.out.println ( "зашифрован текст:" + encryptedContent);
             байт [] = encryptedContentToBinaryStr parseHexToBinaryStr (encryptedContent);
             байт [] = decryptedContentBytes расшифровывать (encryptedContentToBinaryStr, SecretKey); 
            Строка decryptedContent = новый новый String (decryptedContentBytes); 
            System.out.println ( "расшифрованы текст:" + decryptedContent); 
        } улов (Исключение Е) { 
            e.printStackTrace (); 
        } 
    } 
    
    / ** 
     * @author раピОПАСНО су ра ри (Рассвет) 
     * 2019 лет. 5 @date во второй половине дня 28 мая 2:56:42 
     * @detail конвертированы двоичную строку 16 шестнадцатеричной строки 
     * / 
    общественности  статической  байт [] parseHexToBinaryStr (String hexStr) бросает исключение {
         байт [] байт = NULL ;
         ЕСЛИ (hexStr.length () <1. ) {
             вернуть байты; 
        } 
        байт = новый новый  байт [hexStr.length () / 2 ];
         для ( Int0 = I, I <hexStr.length () / 2; я ++ ) {
             INT Высокий = Integer.parseInt (hexStr.substring (I * 2, * 2 + И. 1), 16 );
             INT Низкий = о Integer.parseInt (hexStr .substring (. I * 2 + 1, I * 2 + 2), 16 ); 
            байт [I] = ( байт ) (высокий * 16 + низкий); 
        } 
        вернуть байты; 
    } 
    
    / ** 
     * @author Раピсу Ра ОПАСНО ри (Рассвет) 
     * @date 2019 Нянь 5 во второй половине дня 28 мая 2:54:56 
     * @detail 2 шестнадцатеричная строка преобразуется шестнадцатеричная строка 
     * / 
    общественная  статическая строка parseBinaryToHexStr ( байт [] байт) броски Exception {
        StringBuffer SB = новый StringBuffer ();
        для ( INT = 0; я <bytes.length; я ++ ) { 
            Строка гекс = Integer.toHexString (байты [I] & 0xff );
            если (hex.length () == 1 ) { 
                гекс = "0" + гекс; 
            } 
            Sb.append (hex.toUpperCase ()); 
        } 
        Вернуть sb.toString (); 
    } 
    
    / ** 
     * @author ラピスラズリ(Рассвет) 
     * @date 2019年5月28日下午3:30:33 
     * @detail解密
     * / 
    общественности  статической байт [] расшифровать ( ); байт[] Содержание, Строка SecretKey) бросает исключение { 
        KeyGenerator KeyGenerator = KeyGenerator.getInstance ( "АЭС" ); 
        keyGenerator.init ( 128, новый SecureRandom (secretKey.getBytes ())); 
        SecretKey generatedSecretKey = keyGenerator.generateKey ();
        байт [] encodedBytes = generatedSecretKey.getEncoded (); 
        SecretKeySpec secretKeySpec = новый SecretKeySpec (encodedBytes, "AES" ); 
        Шифр шифра = Cipher.getInstance ( "AES" 
        cipher.init (Cipher.DECRYPT_MODE, secretKeySpec); 
        байт [] Результат = Cipher.doFinal (Content);  
         возврат результата; 
    } 
    
    / ** 
     * @author раピОПАСНО су ра ри (Рассвет) 
     * 2019 лет @date 2:55:25 PM 28 мая 
     * @ подробно шифрования AES 
     * / 
    публичные  статические  байты [] Зашифровать (Content String, String SecretKey) бросает исключение {
         // создать производитель AES ключ 
        к KeyGenerator KeyGenerator = KeyGenerator.getInstance ( "AES" );
         // использовать случайное число для инициализации пароля пользователя
         // 128-битный ключ производителя
         //Шифрование не имеет значения, SecureRandom обеспечения последовательность случайных чисел генерируются, password.getBytes () является семенем,
         // до тех пор , как та же последовательность семя же, до тех пор , как пароль дешифрования на линии
        KeyGenerator.init (128, новый новый SecureRandom (secretKey.getBytes ()));
         // пароль пользователя, ключ для генерации 
        SecretKey generatedSecretKey = keyGenerator.generateKey ();
         // возвращает ключ базового формата кодирования, если этот ключ не поддерживает кодировку возвращается 
        байты [] = encodedBytes generatedSecretKey.getEncoded ();
         // преобразуются в AES закрытого ключа 
        SecretKeySpec SecretKeySpec = новый новые SecretKeySpec (encodedBytes, "AES" );
         // создать пароль является 
        шифром шифра = Cipher.getInstance ( "АЕС" );
         байт[] = ContentBytes content.getBytes ( "UTF - 8" . );
         // инициализировать режим шифрования пароля
        cipher.init (Cipher.ENCRYPT_MODE, secretKeySpec);
        // 加密
        байт [] Результат = cipher.doFinal (contentBytes);
        вернуться результатом; 
    } 

}

 

рекомендация

отwww.cnblogs.com/JimmySeraph/p/10937699.html