Коды симметричного шифрования и дешифрования AES подробно вводятся подробно для вашей ссылки. Конкретный контент заключается в следующем
Пакет Demo.security; импорт java.io.ioexception; импорт java.io.unsupportedencodingexception; импорт java.security.invalidkeexception; импорт java.security.nosuchalgorithmexception; импорт java.security.securerAndom; импорт java.Ut.ut.base. javax.crypto.badpaddingexception; import javax.crypto.cipher; импорт javax.crypto.illegalblocksizexception; импорт javax.crypto.keygenerator; import javax.crypto.nosuchpaddingexception; import.crypto.secretkey; javax.crypto.spec.secretkeyspec; import sun.misc.base64decoder; import sun.misc.base64encoder;/** AES Symmetric Scryption и Decryption*/public class Symmetricencoder {/** шифрование* 1. Конструируйте Генератор. Ключ * 4. Создать и инициализировать пароль * 5. Content Encryption * 6. Возвращает строку */public Static String aesencode (String encoderules, String Content) {try {// 1. Построить генератор ключей, указанный в качестве алгоритма AES, и является нечувствительным к случаям ключа keygen = keygenerator.getInstance ("aes"); // 2. Инициализируйте генератор ключей в соответствии с правилом Ecnoderules // генерировать 128-битный случайный источник и в соответствии с пропущенным байтовым массивом keygen.init (128, New Securerandom (encoderules.getBytes ())); // 3. Генерировать исходный симметричный ключ SecretKey original_key = keygen.GenerateKey (); // 4. Получить байт массив исходного симметричного байта ключа [] raw = original_key.getencoded (); // 5. Генерировать ключ AES из байтового массива секретного ключа = new SecretKeySpec (RAW, "AES"); // 6. Согласно указанному алгоритму AES, сгенерированному криптором Cipher Cipher = cipher.getInstance («AES»); // 7. Инициализировать криптор, первым параметром является операция шифрования (encrypt_mode) или дешифрование и дешифрование (decrypt_mode), а второй параметр - ключ, используемый cipher.init (cipher.encrypt_mode, key); // 8. Получите байт-массив зашифрованного контента (его необходимо установить на UTF-8 здесь). В противном случае, если в контенте есть смешанный китайский и английский, он будет расшифрован в искаженную кодовую байт [] byte_encode = content.getbytes ("utf-8"); // 9. В соответствии с методом инициализации шифра-Encryption: Encrypt Data Byte [] byte_aes = cipher.dofinal (byte_encode); // 10. Конвертируйте зашифрованные данные в строку // Пакет не будет найден в Base64encoder здесь // Solution: // Удалить его сначала удаляет системную библиотеку JRE в пути сборки проекта, а затем добавляет библиотеку системной библиотеки JRE, все идет хорошо после переписки. String aes_encode = new String (new Base64encoder (). Encode (byte_aes)); // 11. Вернуть строку, чтобы вернуть aes_encode; } catch (nosuchalgorithmexception e) {e.printstacktrace (); } catch (nosuchpaddingexception e) {e.printstacktrace (); } catch (InvalidKeyException e) {e.printStackTrace (); } catch (allodalblocksizexception e) {e.printstacktrace (); } catch (badPaddingException e) {e.printstackTrace (); } catch (unsupportEncodingexception e) {e.printstacktrace (); } // Если есть ошибка, добавьте null return null; } /** Decrypt* Процесс расшифровки:* 1. Те же шаги шифрования 1-4* 2. Обратно перевернуло зашифрованную строку в байт [] массив* 3. расшифровку зашифрованного содержимого* /public Static String aesdncode (String encoderules, String Content) {try {// 1. Создайте генератор ключей, укажите его как алгоритм AES и не является чувствительным к случаям кейгенератор keygen = keygenerator.getinstance ("aes"); // 2. Инициализируйте генератор ключей в соответствии с правилом Ecnoderules // генерировать 128-битный случайный источник и в соответствии с пропущенным байтовым массивом keygen.init (128, New Securerandom (encoderules.getBytes ())); // 3. Генерировать исходный симметричный ключ SecretKey original_key = keygen.GenerateKey (); // 4. Получить байт массив исходного симметричного байта ключа [] raw = original_key.getencoded (); // 5. Генерировать ключ AES на основе байтового массива секретного ключа = new SecretKeySpec (RAW, "AES"); // 6. Согласно указанному самообразующему шифру AES AES, шифр Cipher = Cipher.getInstance («AES»); // 7. Инициализируйте шифр, первым параметром является операция шифрования (encrypt_mode) или Decrypt (decrypt_mode), а второй параметр - это ключ Cipher.init (cipher.decrypt_mode, key); // 8. Декодировать зашифрованное и закодированное содержание в байт -массив байт [] byte_content = new Base64decoder (). Decodebuffer (Content); /** Decrypt*/ byte [] byte_decode = cipher.dofinal (byte_content); String aes_decode = new String (byte_decode, "utf-8"); вернуть aes_decode; } catch (nosuchalgorithmexception e) {e.printstacktrace (); } catch (nosuchpaddingexception e) {e.printstacktrace (); } catch (InvalidKeyException e) {e.printStackTrace (); } catch (ioException e) {e.printstackTrace (); } catch (allodalblocksizexception e) {e.printstacktrace (); } catch (badPaddingException e) {e.printstackTrace (); } // Если есть ошибка, добавьте null return null; } public static void main (string [] args) {symmetricencoder se = new SymmetricenCoder (); Сканер сканер = новый сканер (System.in); /** Шифрование*/ system.out.println («Используйте AES Symmetric Encryption, введите правила шифрования»); String encoderules = scanner.next (); System.out.println («Пожалуйста, введите контент, который будет зашифрован:»); String Content = scanner.next (); System.out.println ("Согласно правилу ввода"+encoderules+"зашифрованный зашифрованный текст:"+se.aescode (encoderules, content)); /** Decrypt*/ System.out.println («Используйте симметричное расшифрование AES, введите правила шифрования: (должно быть таким же, как шифрование)»); encoderules = scanner.next (); System.out.println («Пожалуйста, введите контент для расшифровки (Ciphertext):»); content = scanner.next (); System.out.println («В соответствии с правилами ввода»+encoderules+»Простой текст расшифрованное:«+se.aesdncode (encoderules, content)); }} Результаты теста:
Используйте симметричное шифрование AES, введите правила шифрования. Используйте симметричное шифрование AES. Пожалуйста, введите контент, который вы хотите зашифровать:
Используйте симметричное шифрование AES для шифрования зашифрованного текста с использованием симметричного шифрования AES в соответствии с правилами ввода: Z0NWRNPHGHGXHN0CQJLS58CJHMCBFER33RWS7LW+AY = =
Используйте симметричную расшифровку AES, введите правила шифрования: (должно быть так же, как шифрование)
Используйте симметричное шифрование AES для ввода контента (CipherText):
Z0NWRNPHGHGXHN0CQJLS58CJHMCBFER33RWS7LW+AY =
Основной текст расшифрован с использованием симметричного шифрования AES в соответствии с правилами ввода: Используйте AES Symmetric Encryption
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.