В этой статье описываются функции шифрования и дешифрования, реализованные Java на основе алгоритма симметричного шифрования AES. Поделитесь этим для вашей ссылки, следующим образом:
пакет com.soufun.com; импорт java.io.unsupportedencodingexception; импорт java.security.invalidkeyexception; import java.security.nosuchalgorithmexception; импорт java.security.securerandom; import java.util.date; import.crypto.badpaDsem. javax.crypto.cipher; import javax.crypto.illegallocksizexception; импорт javax.crypto.keygenerator; импорт javax.crypto.nosuchpaddingexception; импорт javax.crypto.secretke Aesutil {частная статическая конечная строка aes = "aes"; частная статическая конечная строка utf8 = "utf-8"; Статический ключа kgen = null; static {try {kgen = keygenerator.getInstance (aes); } catch (nosuchalgorithmexception e) {// todo автоматически сгенерированный блок e.printstacktrace (); }}/ * * @param content: * @param password: */private static byte [] encrypt (String Content, String password) {try {// Использовать статические кодовые блоки для генерации объекта ключа // keygenerator kgen = keygenerator.getinstance (aes); // Использование 128-битного kgen.init (128, new Securerandom (password.getbytes ())); SecretKey SecretKey = kgen.GenerateKey (); byte [] encodeformat = secretKey.getEncoded (); CENTERTKEYSPEC KEY = New SecretKeySpec (Encodeformat, AES); // Объект шифра фактически завершает операцию шифрования шифр Cipher = cipher.getInstance (aes); // шифровать контент для кодирования byte [] bytecontent = content.getbytes (utf8); // Инициализировать объект Cipher cipher.init (cipher.encrypt_mode, key); // Выполнить операцию шифрования byte [] result = cipher.dofinal (bytecontent); результат возврата; } catch (nosuchalgorithmexception e) {e.printstacktrace (); } catch (nosuchpaddingexception e) {e.printstacktrace (); } catch (InvalidKeyException e) {e.printStackTrace (); } catch (unsupportEncodingexception e) {e.printstacktrace (); } catch (allodalblocksizexception e) {e.printstacktrace (); } catch (badPaddingException e) {e.printstackTrace (); } return null; }/ * * @param content: * @param password: */private static byte [] decrypt (byte [] content, string password) {try {// Использовать статические кодовые блоки для генерации объекта ключевого генератора // keygenerator kgen = keygenerator.getinstance (aes); // Использование 128-битного kgen.init (128, new Securerandom (password.getbytes ())); SecretKey SecretKey = kgen.GenerateKey (); byte [] encodeformat = secretKey.getEncoded (); CENTERTKEYSPEC KEY = New SecretKeySpec (Encodeformat, AES); // Объект шифра фактически завершает операцию шифрования шифр Cipher = cipher.getInstance (aes); // инициализировать объект Cipher с помощью ключа cipher.init (cipher.decrypt_mode, key); // Формальное выполнение операции дешифрования byte [] result = cipher.dofinal (content); результат возврата; } 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 (); } return null; } / ** * Binary-》 Hex Conversion * @param buf * @return * / private static String parsebyte2Hexstr (byte buf []) {stringBuffer sb = new StringBuffer (); for (int i = 0; i <buf.length; i ++) {string hex = integer.tohexstring (buf [i] & 0xff); if (hex.length () == 1) {hex = '0' + hex; } sb.append (hex.touppercase ()); } вернуть sb.toString (); } / ** * hex-》 двоичное преобразование * @param hexstr * @return * / private static byte [] parsehexstr2byte (string hexstr) {if (hexstr.length () <1) {return null; } byte [] result = new Byte [hexstr.length () / 2]; for (int i = 0; i <hexstr.length () / 2; i ++) {int high = integer.parseint (hexstr.substring (i * 2, i * 2+1), 16); int low = integer.parseint (hexstr.substring (i * 2 + 1, i * 2 + 2), 16); результат [i] = (byte) (высокий * 16 + низкий); } return Result; } public static void main (string [] args) бросает UnsupportedEncodingException {long begin = new Date (). getTime (); String Content = "AAADES Test Encryption"; String password = "12345678dd"; // Encrypt System.out.println ("До шифрования:" + content); byte [] encryptresult = incrypt (content, пароль); String encryptresultstr = parsebyte2Hexstr (encryptresult); System.out.println ("После Encrypt:" + Encryptresultstr); // расшифровывает байт [] decryptfrom = parsehexstr2byte (encryptresultstr); byte [] decryptresult = decrypt (decryptfrom, пароль); // расшифрование содержимого для декодирования строки result = new String (Decryptresult, UTF8); System.out.println ("После расшифровки:" + result); Long End = New Date (). getTime (); System.out.println (End-Begin); }}Примечание. Securerandom генерирует безопасную последовательность случайных чисел, Password.getbytes () - это семя. Пока семена одинаково, последовательность одинакова. Следовательно, до тех пор, пока есть пароль, может быть сделано дешифрование, и эта последовательность может быть восстановлена.
PS: друзья, которые заинтересованы в шифровании и дешифровании, также могут относиться к онлайн -инструментам этого сайта:
Безопасность пароля онлайн -обнаружение:
http://tools.vevb.com/password/my_password_safe
Высокопрочный генератор паролей:
http://tools.vevb.com/password/createstrongpassword
Инструменты гром, экспресс и торнадо URL
http://tools.vevb.com/password/urlrethunder
Инструмент по шифрованию хэша/хэш -хэш -хэша:
http://tools.vevb.com/password/hash_encrypt
Онлайн MD5/HASH/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160 Инструмент шифрования:
http://tools.vevb.com/password/hash_md5_sha
Онлайн SHA1/SHA224/SHA256/SHA384/SHA512 Инструмент шифрования:
http://tools.vevb.com/password/sha_encode
Я надеюсь, что эта статья будет полезна для всех Java Programming.