Dieser Artikel beschreibt die von Java implementierten Verschlüsselungs- und Entschlüsselungsfunktionen basierend auf dem symmetrischen Verschlüsselungsalgorithmus. Teilen Sie es für Ihre Referenz wie folgt weiter:
DES -Verschlüsselungskategorien:
Securerandom wird von der Java.util.Random -Klasse geerbt
Es gibt drei Arten von Konstruktoren dieser Klasse. Die folgenden Beispiele sind zwei Beispiele:
Securerandom () konstruiert einen sicheren Zufallszahlengenerator (RNG), der den Standard -Zufallszahlenalgorithmus implementiert.
Securerandom (Byte [] Seed) konstruiert einen sicheren Zufallszahlengenerator (RNG), der den Standard -Zufallszahlenalgorithmus implementiert.
Deskeyspec wird verwendet, um den Schlüsselinhalt des Schlüssels mithilfe des ursprünglichen Schlüssels zu generieren.
Deskeyspec hat zwei Konstruktoren:
Deskeyspec (Byte [] Key) erstellt ein Deskeyspec -Objekt unter Verwendung der ersten 8 Bytes im Schlüssel als Schlüsselinhalt des DES -Schlüssels.
Deskeyspec (Byte [] Key, Int Offset) erstellt ein Deskeyspec-Objekt, wobei die ersten 8 Bytes in dem Schlüssel verwendet werden, der mit dem Versatz als Schlüsselinhalt des Des-Ede-Schlüssels beginnt und dies enthält.
SecretKeyFactory, eine Schlüsselfabrik, die zum Umwandeln eines Schlüssels (Opic -Verschlüsselungsschlüssel des Typs) in eine Schlüsselspezifikation (transparente Darstellung des zugrunde liegenden Schlüsselmaterials) verwendet wird, und umgekehrt. Secret Key Factory arbeitet nur mit geheimen (symmetrischen) Schlüssel.
SecretKey -Objekt, geheimes Schlüsselobjekt, generiert geheimen Schlüssel, indem er die Methode für generierte Secret (Deskeyspec Desktop Space) der geheimen Schlüsselfabrik aufruft
Die Cipher -Klasse bietet Kennwortfunktionen für Verschlüsselung und Entschlüsselung und erhält Instanzen, indem Cipher's GetInstance ("DES" aufgerufen wird.
Das Cipher -Objekt ruft die Init () -Methode auf, um das Objekt zu initialisieren.
Nennen Sie schließlich die Verschlüsselung und Entschlüsselung von Cipher's dofinal ().
Hier möchte ich Ihnen eine Frage stellen.
1. Verwenden Sie Sun.misc.base64Decoder und Base64Encoder für die Entschlüsselung und Codierung
Paket com.soufun.com; Import Java.io.ioxception; Import Java.Security.NoSuchalgorithmException; .Spec.deskeyspec; // Import 64-Bit-Codierung von Sun Import Sun.misc.base64DeCoder; Import Sun.Misc.Base64EnCoder; {try {keyFactory = secryKeyFactory.getInstance ("Des"); // todo automatisch generierte Blocke E. printstacktrace ()}} statische void main (String [] args) Ausnahme {Long begin = neuer Datum () GetTime (); (Daten, Schlüssel); = neues Datum () GetTime (); Die Codierung, aber die Spezifikation kann auch Byte [] bt = Encrypt (data.getBytes (utf8), key.getBytes (utf8)) sein; // HINWEIS: Wenn Sie Verschlüsseln und Entschlüsseln verwenden, verwenden Sie Sun's Base64Encoder () zum Codieren und Dekodieren von Sun. Andernfalls gibt es einen verstümmelten Code. Return Strs; String -Schlüssel) wirft IOException aus, Ausnahme {if (data == null) null; .getBytes ()); Verschlüsselungschlüssel -Byte -Array * @return * @Throws Ausnahme */ privates statisches Byte [] Verschlüsseln (Byte [] Daten, Byte [] Key) Ausnahme {// eine vertrauenswürdige Quellenquelle Securerandom sr = new Securerandom () // Erstellen eines Deskeyspec -Objekts Die Schlüsselfabrik wird verwendet, um den Schlüssel (Opic -Verschlüsselungsschlüssel des Typschlüssels) in die Schlüsselspezifikation (transparente Darstellung des zugrunde liegenden Schlüsselmaterials) umzuwandeln und umgekehrt. Secret Key Factory arbeitet nur mit geheimen (symmetrischen) Schlüssel. // Stattdessen den Singleton -Modus hier // SecretKeyFactory KeyFactory = SecretKeyFactory.getInstance (DES); SecretKey SecureKey = KEYFACTORY.generatesecret (DKS); Encrypt_Mode wird verwendet, um die Verschlüsselung in eine Konstante für den Verschlüsselungsmodus zu initialisieren. cipher.init (cipher.encrypt_mode, SecureKey, SR); vertrauenswürdige Quelle Securerandom SR = new Securerandom (); Erstellen Sie ein Deskeyspec -Objekt aus den ursprünglichen Schlüsseldaten, dh dem Schlüsselinhalt des Schlüssels, der die Schlüsseldeskeyspec Dks = New Deskeyspec (Schlüssel) erstellt. Secret Key Factory arbeitet nur mit geheimen (symmetrischen) Schlüssel. // Stattdessen den Singleton -Modus hier // SecretKeyFactory KeyFactory = SecretKeyFactory.getInstance (DES); SecretKey SecureKey = KEYFACTORY.GENERATECRET (DKS) // Die Verschlüsselungsklasse bietet Kennwortfunktionen für Verschlüsselung und Entschlüsselung. cipher.init (Cipher.Decrypt_mode, SecureKey, SR);2. verwenden
Paket com.soufun.com; Import Java.io.ioxception; Import Java.Security.NoSuchalgorithmException; .Spec.deskeyspec; import org.apache.commons.codec.base.base64;/** *@Autor whd * */public Klasse Desutil {// Verschlüsselungsmethode private statische String Des = "Des"; (); Long begin = neuer Datum (). (); Schlüsselverschlüsselungs -Byte -Array * @Return * @Throws Ausnahme */ public statische String -Verschlüsselung (String -Daten, String -Schlüssel) Auslöst Ausnahme. Misc.Base64Encoder; Base64.EnsBase64String (BT); odec.bary.base64 zu dekodieren Byte [] buf = base64.DecodeBase64 (Daten); {// generieren Sie eine vertrauenswürdige Zufallszahlenquelle Securerandom sr = new Securerandom (); Erstellen Sie ein Deskeyspec -Objekt aus den ursprünglichen Schlüsseldaten, dh dem Schlüsselinhalt des Schlüssels, der die Schlüsseldeskeyspec Dks = New Deskeyspec (Schlüssel) erstellt. Secret Key Factory arbeitet nur mit geheimen (symmetrischen) Schlüssel. // Stattdessen den Singleton -Modus hier // SecretKeyFactory KeyFactory = SecretKeyFactory.getInstance (DES); SecretKey SecureKey = KEYFACTORY.generatesecret (DKS); Encrypt_Mode wird verwendet, um die Verschlüsselung in eine Konstante für den Verschlüsselungsmodus zu initialisieren. cipher.init (cipher.encrypt_mode, SecureKey, SR); vertrauenswürdige Quelle Securerandom SR = new Securerandom (); Erstellen Sie ein Deskeyspec -Objekt aus den ursprünglichen Schlüsseldaten, dh dem Schlüsselinhalt des Schlüssels, der die Schlüsseldeskeyspec Dks = New Deskeyspec (Schlüssel) erstellt. Secret Key Factory arbeitet nur mit geheimen (symmetrischen) Schlüssel. // Stattdessen den Singleton -Modus hier // SecretKeyFactory KeyFactory = SecretKeyFactory.getInstance (DES); SecretKey SecureKey = KEYFACTORY.GENERATECRET (DKS) // Die Verschlüsselungsklasse bietet Kennwortfunktionen für Verschlüsselung und Entschlüsselung. cipher.init (Cipher.Decrypt_mode, SecureKey, SR);Laden Sie die Adresse des in 1 und 2 verwendeten Pakets herunter:
Download: sun.misc.base64Decoder.
Download: Apache's Base64 Coding, Decoder.
3.. Es wird keine Codierung verwendet, Decodierungspaket
Paket com.soufun.com; Import Java.io.ioxception; Import Java.Security.NoSuchalgorithmException; javax.crypto.spec.deskeyspec; import javax.crypto.spec.ivparameterspec;/***@Autor WHD * */public class descrypt {static SecretKeyFactoryFactoryfactory = Null; {e.printstacktrace (); = "GBK"; /* * Container for object cache*/ static abstract class Cache { private final Map innerCache = new HashMap(); protected abstract Object createValue(Object key) throws Exception; public Object get(Object key) throws Exception { Object value; synchronized (innerCache) { value = innerCache.get(key); if (value == null) { value = new CreationPlaceholder(); Innercache.put (Schlüssel, Wert); ;}} Rückgabewert; } / * * hex-> str & stri- ByTestring, 16); HextOsting (Byte B []) {StringBuffer HexString = New StringBuffer (); HexString.toString (); 8) {return text.getBytes (utf8); [I / 4] = (Byte) Integer.ParseInt (text.substring (i, i + 2), 16); Neue IOException ("TXT '" + text "' ist ungültig!")}}} Return -Ergebnis; versuche { SecretKeyObj = SecretKeyFactory.GenerateSecret (neuer DeskeySpec (_convertKeyiv (String)); ivobj = neu IVPARAMEDERSCHAFT (_CONVERTYIV) (String)); ParameterSpec) ivparamspecs.get (authiv); (Ausnahme E) {E.Printstacktrace (); } return hextostring (authToken); SecretKey, IVParameter IV) Ausnahme von Cipher Cipher = Cipher.getInstance (Cipher); OBJ = NULL; = (SecretKey) SecretKeySpecs.Get (Authaste); byte [] data = stringTohex (Nachricht); Decrypt (Daten, IV); } public static void main (String [] args) löst Ausnahme {aus { Long begin = neuer Datum () .println ("verschlüsselt:" + verschlüsselt); decrypt (verschlüsselt, authiv);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.