Dieses Beispiel teilt ein Java -Verschlüsselungs- und Entschlüsselungswerkzeug, das für Javase/Javaee/Android geeignet ist, damit jeder lernen kann. Der spezifische Inhalt ist wie folgt
Paket longshu.utils.Security; Import Java.lang.reflect.Method; Import Java.Security.invalidkeyException; Import Java.Security.Key; Import Java.Security.Messagedigest; Import Java.security.Security.Security.Security. import javax.crypto.BadPaddingException;import javax.crypto.Cipher;import javax.crypto.IllegalBlockSizeException;import javax.crypto.KeyGenerator;import javax.crypto.NoSuchPaddingException;import javax.crypto.SecretKey;import javax.crypto.spec.secretkeyspec; /*** Java -Verschlüsselung und Entschlüsselungsinstrument. * Sowohl Javase/Javaee/Android sind anwendbar** @Author Longshu 13. April 2016*/Public Class Encryptdecrypt {// kein Objekt private EncryptDecrypt () {}/*** sha1 verschlüsseltes Bitdaten* @Param Quelle Byte Arays* @retrurn Encryted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted Byted. Quelle) {try {MessagedIGest sha1Digest = MessagedIGest.getInstance ("SHA-1"); sha1Digest.update (Quelle); byte targetDigest [] = sha1Digest.Digest (); targetDigest zurückgeben; } catch (nosuchalgorithmException e) {neue runimeexception (e) werfen; }} / *** Sha1 verschlüsselte Zeichenfolge Daten* @param source String, die verschlüsselt werden soll } / *** MD5 verschlüsselte Bitdaten* @param Source Byte Array* @return verschlüsselt Byte Array* / public static Byte [] Md5bit (Byte [] Quelle) {try {// das modellagierende Objekt des md5 -Digest -Algorith -Messagedigest -Messagedigest = Messaged. // Aktualisieren Sie die Digest Md5Digest.Update (Quelle); // den CipheText return md5Digest.Digest (); } catch (nosuchalgorithmException e) {neue runimeexception (e) werfen; }} / *** Verschlüsselter String, 32-Bit-Long* @param Source-Inhalt, der verschlüsselt werden soll } / *** Base64 codieren* @param source String, um codiert zu werden Methode codemethod = null; Versuchen Sie {// Prioritätsnutzung von Bibliotheken von Drittanbietern clazz = class.forname ("org.apache.commons.codec.base.base64"); codemethod = clazz.getMethod ("EncodeBase64", byte []. Klasse); System.out.println ("EncodeBase64->" + Clazz); System.out.println ("codemethod->" + codemethod); // Die statische Methode der Reflexionsmethode erfordert kein Objekt, um eine neue String ((byte []) codemethod.invoke (null, source.getBytes ()) auszuführen; } catch (classNotFoundException e) {String vm = system.getProperty ("java.vm.name"); System.out.println (VM); try {if ("dalvik" .equals (vm)) {// android clazz = class.forname ("android.util.base64"); // byte [] Base64.Encode (byte [] input, int flags) codemethod = clazz.getMethod ("codieren", byte []. Klasse, int.Class); System.out.println ("EncodeBase64->" + Clazz); System.out.println ("codemethod->" + codemethod); return New String ((byte []) codemethod.invoke (null, source.getBytes (), 0)); } else {// javase/javaee clazz = class.forname ("sun.misc.base64Coder"); codemethod = clazz.getMethod ("codieren", byte []. Klasse); System.out.println ("EncodeBase64->" + Clazz); System.out.println ("codemethod->" + codemethod); return (string) codemethod.invoke (clazz.newinstance (), source.getBytes ()); }} catch (classNotFoundException e1) {return null; } catch (Ausnahme e1) {return null; }} catch (Ausnahme e) {return null; } / * * Android * android.util.base64 * // return base64.EntoToString (Quelle, Base64.Default); // Neue String zurückgeben (Base64.Encode (Source.GetByTes (), Base64.Default)); / * * Javase/javaee */// sun.misc.base64Enencoder // Base64Coder cnodier = new Base64Encoder (); // cegoder.encode zurückgeben (source.getBytes ()); // org.apache.commons.codec.bary.base64 // Neue String zurückgeben (Base64.Encodebase64 (source.getBytes ()); } / *** Base64 decodieren* @param codesource codesource codesource* @return String vor dem Codieren* / public static String decodeBase64 (String codesource) {class <?> Clazz = null; Methode decodemethod = null; Versuchen Sie {// Prioritätsnutzung von Bibliotheken von Drittanbietern clazz = class.forname ("org.apache.commons.codec.base.base64"); decodemethod = clazz.getMethod ("decodeBase64", byte []. Klasse); System.out.println ("decodeBase64->" + clazz); System.out.println ("decodemethod->" + decodemethod); // statische Methoden zur Reflexionsmethode ohne Objekt ausführen. Return New String ((byte []) decodemethod.invoke (null, codesource.getBytes ())); } catch (classNotFoundException e) {String vm = system.getProperty ("java.vm.name"); System.out.println (VM); try {if ("dalvik" .equals (vm)) {// android clazz = class.forname ("android.util.base64"); // byte [] base64.decode (byte [] input, int flags) decodemethod = clazz.getMethod ("decode", byte []. Klasse, int.Class); System.out.println ("decodeBase64->" + clazz); System.out.println ("decodemethod->" + decodemethod); return New String ((byte []) decodemethod.invoke (null, codesource.getBytes (), 0)); } else {// javase/javaee clazz = class.forname ("sun.misc.base64DeCoder"); decodemethod = clazz.getMethod ("decodeBuffer", string.class); System.out.println ("decodeBase64->" + clazz); System.out.println ("decodemethod->" + decodemethod); Return New String ((Byte []) decodemethod.invoke (clazz.Newinstance (), codesource)); }} catch (classNotFoundException e1) {return null; } catch (Ausnahme e1) {return null; }} catch (Ausnahme e) {return null; } / * * Android * android.util.base64 * // neu // String zurückgeben (Base64.Decode (codesource.getBytes (), Base64.Default); / * * Javase/javaee */// sun.misc.base64DeCoder // try {// Base64DeCoder decoder = new Base64DeCoder (); // neue String zurückgeben (decoder.decodeBuffer (codesource)); //} catch (ioException e) {// neue RunTimeException (e) werfen; //} // org.apache.commons.Codec.berary.base64 // neue String zurückgeben (Base64.decodeBase64 (codesource.getBytes ())); }/*** AES Verschlüsselung* @param Inhaltsinhalt, um verschlüsselt zu werden EncryptCipher.init (cipher.encrypt_mode, getKey (Passwort)); // Byte [] result = Encryptcipher.dofinal (Inhalt) initialisieren; Rückgabeergebnis; // Encrypt} 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 decrypt* @param content Inhalt, um entschlüsselt zu werden decryptcipher.init (cipher.decrypt_mode, getKey (passchen)); // byte [] result = decryptcipher.dofinal (Inhalt) initialisieren; Rückgabeergebnis; // Encrypt -Ergebnis} catch (InvalyKeyException e) {e.printstacktrace (); } catch (nosuchalgorithmException e) {e.printstacktrace (); } catch (nosuchpaddingException e) {e.printstacktrace (); } catch (illegalblocksizeexception e) {e.printstacktrace (); } catch (badpaddingException e) {e.printstacktrace (); } return null; } / *** aes String -Verschlüsselung* @param -Inhaltsinhalt, um verschlüsselt zu werden } / *** AES String decryption* @param -Inhaltsinhalt, um entschlüsselt zu werden } / *** Generieren Sie den Schlüssel aus der angegebenen Zeichenfolge* @param Passwort Die Zeichenfolge, die den Schlüssel ausmacht. // Taste KeyGenerator generieren kGen = keygenerator.getInstance ("aes"); KGen.init (128, Securerandom); SecretKey SecretKey = kGen.generateKey (); byte [] codeFormat = secryKey.getEcoded (); // Key SecretKeySpec Key = New SecretKeySpec (EncodeFormat, "AES") konvertieren; Eingabetaste; } /*** Konvertieren Sie das Byte -Array in eine Zeichenfolge, die hexadezimale Werte darstellt. * Zum Beispiel: byte [] {8,18} bis: 0812 * und byte [] hexStr2Bytes (String -Strin) sind gegenseitig reversible Konvertierungsprozesse. * @param bytes das Byte -Array, das konvertiert werden muss // Jeder Byte wird durch zwei Zeichen dargestellt, sodass die Länge der Zeichenfolge doppelt so hoch ist wie die Länge des Array StringBuffer hexstring = new StringBuffer (Byteslen * 2); für (int i = 0; i <byteslen; i ++) {// Führen Sie jeden Byte mit 0xff durch, konvertieren Sie es dann in Dezimal und konvertieren Sie es dann durch Ganzzahl in Hex. String hex = Integer.tohexString (Bytes [i] & 0xff); if (hex.length () <2) {hexstring.Append (0); // Wenn Sie 0 bis 1 Bit vor} hexstring.Append (hex) hinzufügen; } return hexstring.toString (); } /** * Konvertieren Sie eine Zeichenfolge, die Hexvalues in ein Byte -Array darstellt. * @param bytes * @return konvertiertes Byte -Array */ public static byte [] hexStr2Bytes (String strin) {byte [] arrb = strin.getBytes (); int ilen = arrb.length; // Zwei Zeichen repräsentieren ein Byte, daher ist die Länge des Byte -Arrays die Stringlänge geteilt durch 2 Byte [] arrout = new Byte [ilen / 2]; für (int i = 0; i <ilen; i = i + 2) {String strtmp = new String (arrb, i, 2); arrout [i / 2] = (Byte) Integer.ParseInt (Strtmp, 16); } return arrout; }}Das obige dreht sich alles um diesen Artikel. Ich hoffe, dass es für alle hilfreich sein wird, Java -Programme zu lernen.