Zu den gebräuchlichen gehören: Datenbank-Benutzerpasswort, SMS-Plattform-Benutzerpasswort, festes Passwort für die systemübergreifende Überprüfung usw.
Diese Toolklasse bezieht sich auf die Implementierung von Abschnitt 5.3 des Buches „Spring.3.x Enterprise Application Development Practice“.
Die vollständigen Code- und Anmerkungsinformationen lauten wie folgt:
Kopieren Sie den Codecode wie folgt:
Paket com.cncounter.util.comm;
java.security.Key importieren;
import java.security.SecureRandom;
javax.crypto.Cipher importieren;
import javax.crypto.KeyGenerator;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
öffentliche Klasse DESUtils {
// Schlüssel
privater statischer Schlüsselschlüssel;
// KEY-Samen
privater statischer String KEY_STR = "[email protected]";
// konstant
öffentlicher statischer finaler String UTF_8 = "UTF-8";
öffentlicher statischer finaler String DES = "DES";
// statische Initialisierung
statisch{
versuchen {
// KEY-Generator
KeyGenerator-Generator = KeyGenerator.getInstance(DES);
//Initialisierung, sicherer Zufallsoperator
generator.init(new SecureRandom( KEY_STR.getBytes(UTF_8) ));
// Schlüssel generieren
key = generator.generateKey();
Generator = null;
} Catch (Ausnahme e) {
throw new RuntimeException(e);
}
}
/**
* Verschlüsseln Sie die Quellzeichenfolge und geben Sie die BASE64-codierte verschlüsselte Zeichenfolge zurück.
* @param source Quellzeichenfolge, Klartext
* @return Chiffretextzeichenfolge
*/
öffentliche statische String-Kodierung (String-Quelle){
versuchen {
// Holen Sie sich das Byte-Array entsprechend dem Codierungsformat
byte[] sourceBytes = source.getBytes(UTF_8);
// DES-Verschlüsselungsmodus
Cipher cipher = Cipher.getInstance(DES);
cipher.init(Cipher.ENCRYPT_MODE, Schlüssel);
// Verschlüsseltes Byte-Array
byte[] encryptSourceBytes = cipher.doFinal(sourceBytes);
// Base64-Encoder
BASE64Encoder base64Encoder = new BASE64Encoder();
return base64Encoder.encode(encryptSourceBytes);
} Catch (Ausnahme e) {
// throw kann auch als Return-Pfad betrachtet werden
throw new RuntimeException(e);
}
}
/**
* Dekodieren/entschlüsseln Sie die mit der Methode encode() dieser Werkzeugklasse verschlüsselte Zeichenfolge
* @param verschlüsselt Die verschlüsselte Zeichenfolge, also den Chiffretext
* @return Klartextzeichenfolge
*/
öffentliche statische String-Dekodierung (String verschlüsselt){
// Base64-Decoder
BASE64Decoder base64Decoder = new BASE64Decoder();
versuchen {
//Base64 zuerst dekodieren
byte[] cryptedBytes = base64Decoder.decodeBuffer(encrypted);
// DES-Entschlüsselungsmodus
Cipher cipher = Cipher.getInstance(DES);
cipher.init(Cipher.DECRYPT_MODE, Schlüssel);
//Dekodiertes Byte-Array
byte[] decryptStrBytes = cipher.doFinal(cryptedBytes);
// Konvertieren Sie das Byte-Array mithilfe des angegebenen Codierungsformats in einen String
return new String(decryptStrBytes, UTF_8);
} Catch (Ausnahme e) {
// Dieses Formular ist tatsächlich für die Verarbeitung von Werkzeugklassen geeignet
throw new RuntimeException(e);
}
}
// Unit-Test
public static void main(String[] args) {
//String, der verschlüsselt werden muss
String email = "[email protected]";
//verschlüsseln
String verschlüsselt = DESUtils.encode(email);
// Entschlüsseln
String decrypted = DESUtils.decode(encrypted);
//Ausgabeergebnis;
System.out.println("email: " + email);
System.out.println("encrypted: " + verschlüsselt);
System.out.println("decrypted: " + decrypted);
System.out.println("email.equals(decrypted): " + email.equals(decrypted));
}
}