Dieser Artikel beschreibt die Verwendung von HEX -Codierung und -decodierung zur Implementierung von AES -Verschlüsselung und Entschlüsselung. Teilen Sie es für Ihre Referenz wie folgt weiter:
Hier wird die AES -Verschlüsselungs- und Entschlüsselungsmethode unter Verwendung von Hex codiert und dekodiert.
Paket com.baidu.wallet.bdwallet.utils; import Java.io.unsupportedenCodingException; Import Java.security.invalidkeyException; importieren java.security.nosuchalgorithmexception; javax.crypto.ilgelegalblocksizeexception; import javax.crypto.nosuchpaddingException; import Javax.Crypto.spec.secretkeyspec; importieren org.apache.commons.Codec.Decoderexception; Aes = "aes"; private statische endgültige String utf8 = "utf-8"; / ** * aes Verschlüsselung * @param content * @param pkey * @return * @throws decodeRexception */ private static byte [] Encrypt (String -Inhalt, String Pkey) löst deCodeRexception {try {String privat_key = pkey; byte [] cododFormat = null; Versuchen Sie {// Warum muss der geheime Schlüssel dekodiert werden? Weil der geheime Schlüssel der Wert eines von Hex codierten geheimen Schlüssels ist, muss er bei Verwendung von Encodeformat = hex.decodeHex (private_key.toarArray ()) dekodiert werden; } catch (decoderexception e) {e.printstacktrace (); } SecryKeyspec key = new SecretKeySpec (EncodeFormat, AES); // Das Cipher -Objekt vervollständigt tatsächlich die Verschlüsselungsoperation Cipher Cipher = Cipher.getInstance ("AES/ECB/PKCS5Padding"); // Verschlüsseln Sie den Inhalt für die Codierung von Byte [] bytecontent = content.getBytes (utf8); // Initialisieren Sie das Cipher -Objekt cipher.init (cipher.encrypt_mode, key); // formelle Ausführung des Verschlüsselungsbyte [] result = cipher.dofinal (bytecontent); Rückgabeergebnis; } catch (nosuchalgorithmException e) {e.printstacktrace (); } catch (nosuchpaddingException e) {e.printstacktrace (); } catch (InvalyKeyException e) {e.printstacktrace (); } catch (unportedenCodingException e) {e.printstacktrace (); } catch (illegalblocksizeexception e) {e.printstacktrace (); } catch (badpaddingException e) {e.printstacktrace (); } return null; } /** * aes decryption * @param contents * @param password * @return * @throwexception * /private static byte [] entschlüsselt (String -Inhalt, Kennwort für String) löst DecodeRexception {try {// HEX verwenden, um den Ciphittext [] content = hex.decodeshex (Contents.tocoryarray ()) (); // Warum muss der geheime Schlüssel dekodiert werden? Da der geheime Schlüssel der Wert eines von Hex codierten geheimen Schlüssels ist, muss er dekodiert werden, wenn Byte [] codesformat = hex.decodeHex (password.toarArray ()) verwendet werden; Secrykeyspec key = new SecretKeySpec (EncodeFormat, AES); // Das Cipher -Objekt vervollständigt tatsächlich die Verschlüsselungsoperation Cipher Cipher = cipher.getInstance (AES); // Initialisieren Sie das Cipher -Objekt cipher.init (Cipher.decrypt_mode, Schlüssel); // formelle Ausführung des Entschlüsselungsbyte [] result = cipher.dofinal (Inhalt); Rückgabeergebnis; } catch (nosuchalgorithmException e) {e.printstacktrace (); } catch (nosuchpaddingException e) {e.printstacktrace (); } catch (InvalyKeyException e) {e.printstacktrace (); } catch (illegalblocksizeexception e) {e.printstacktrace (); } catch (badpaddingException e) {e.printstacktrace (); } return null; } /*** AES -Verschlüsselung* @param context plainText* @param private_key Secret Key* @return* @throws decodeRexception* /public static String Verschlüsselung (String -Kontext, String private_key) löst decoderexception {// der verschlüsselte Klartext. // Kennwort Text Hex Coding String String EncryPtresultstr = hex.encodhexString (EncryPtresult); return EncryPtresultstr; } /*** aes decrypt* @param context cipherText* @param private_key geheime Schlüssel* @return* @throws decodeexception* @throws UnsupportedenCodingException* /public static String decryption (String Context, String private_key). byte [] decryPtresult = decrypt (Kontext, privat_key); String result = new String (entschlüsselt, utf8); Rückgabeergebnis; } public static void main (String [] args) löst nicht supportedenCodingException aus, decoderexception {// verschlüsseltes Inhaltsstring content = "123456787654321"; // AES Verschlüsselung und Entschlüsselungsschlüssel String Passwort = "Dieser Wert wird im Allgemeinen angegeben, beide Absender wissen"; // Verschlüsselnde System.out.println ("Bevor die Verschlüsselung:" + Inhalt); // Rufen Sie die Verschlüsselungsmethode auf String EncryPtresultstr = Verschlüsselung (Inhalt, Kennwort); System.out.println ("After After Verschlüsselung:" + EncryPtresultstr); // rufen Sie die Entschlüsselungsmethode String result = entschlüsselt (EncryPtresultstr, Kennwort); // Entschlüsseln Sie den Inhalt für Decoding System.out.println ("nach der Entschlüsselung:" + Ergebnis); }}Es gibt kein Problem mit dieser Methode in formalen Projekten. Bitte beachten Sie, dass Sie die AES -Verschlüsselung und Entschlüsselung hier korrigieren müssen ...
Die obige Methode wird in org.apache.commons.codec.bary.hex verwendet. Die Konfiguration in Maven lautet wie folgt:
<Depopenty> <gruppe> commons-codec </Groupid> <artifactID> Commons-codec </artifactId> <version> 1.4 </Version> </abhängig>
HINWEIS: Hier sollten Sie Version 1.4 und höher verwenden, und es sollte keine Hex.CoddeHexString (Byte []) -Methode unter 1.4 geben!
PS: Freunde, die an Verschlüsselung und Entschlüsselung interessiert sind, können sich auch auf die Online -Tools dieser Website beziehen:
Online -Erkennung von Passwortsicherheit:
http://tools.vevb.com/password/my_password_safe
Hochfestes Passwortgenerator:
http://tools.vevb.com/password/createstongPassword
Donnern-, Express- und Tornado -URL -Verschlüsselung/Entschlüsselungsinstrumente:
http://tools.vevb.com/password/urlrethunder
Online -Hash/Hash -Algorithmus -Verschlüsselungstool:
http://tools.vevb.com/password/hash_encrypt
Online MD5/Hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160-Verschlüsselungsinstrument:
http://tools.vevb.com/password/hash_md5_sha
Online SHA1/SHA224/SHA256/SHA384/SHA512 Verschlüsselungsinstrument:
http://tools.vevb.com/password/sha_encode
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.