Oft ist eine persistente Verschlüsselung für die geheime Verschlüsselung erforderlich, und die Verschlüsselung zu diesem Zeitpunkt verwendet MD5. Bei Verwendung der symmetrischen Verschlüsselung wird die DES -Methode verwendet
Java.io.ioException; ; "; String -Ergebnis = NULL; resultString; xff) <x) {bf.append ("t"); zum Schlüsselwert * @param data * @paramschlüsselverschlüsselungsschlüssel -Byte -Array * @return * @throws Exception */ public static String decrypt (String -Daten, String -Schlüssel) löst die Ausnahme aus {if (key == null) {Key = key; } byte [] bt = Encrypt (data.getBytes (), key.getBytes ()); Paramendaten * @Paramschlüsselverschlüsselungsschlüssel Byte -Array * @return * @throws ioException * @throws Exception */ public static String DesdeCrypt (String Data, String -Taste) löst die IOExc -Episode aus, Ausnahme {if (data == null) {return null ;} if (key == null) {key = key; ); ] D ATA, BYTE [] Schlüssel) löst eine Ausnahme aus {// eine vertrauenswürdige Zufallszahlenquelle Securerandom sr = new Securerandom () erstellen; Erstellen Sie eine Schlüsselfabrik und konvertieren Sie Deskeyspec in das SecretKey -Objekt SecretKeyFactory Keyfactory = SecretKeyFactory.getInstance (DES); Cipher.getInstance (DES); Paramendaten * @Param Key Encryption Key Byte Array * @return * @throws Exception */ private statische Byte [] entschlüsselt (Byte [] Daten, Byte [] Key) löst eine Ausnahme aus {// eine vertrauenswürdige Zufallszahlenquelle Securerandom SR = generieren Neue Securandom (); Des); );Im Folgenden werde ich einen Code einführen, um die MD5 -Verschlüsselungs- und Entschlüsselungsklassen in Java zu implementieren
Java implementiert MD5 -Verschlüsselungs- und Entschlüsselungsklassen mit Testklassen, siehe Code für Details.
MD5 -Verschlüsselungs- und Entschlüsselungsklasse - MYMD5UTIL, der Code ist wie folgt:
Paket com.zyg.security.md5; Statische Schlussfolie hex_nums_str = "0123456789abcdef"; = (Hex.length () / 2); pos = i * 2; Konvertieren Sie das angegebene Byte -Array in eine Hex -String * @param b * @return i ++) {String hex = Integer.tohexString (b [i] & 0xff); ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::)) * @param passwordInDb * @return * @throws NoSuchAlgorithmException * @ throws UnsupportedEncodingException */ public static boolean validPassword(String password, String passwordInDb) throws NoSuchAlgorithmException, UnsupportedEncodingException { //Convert the hex string format password into a byte array byte[] pwdInDb = HexStringtoByte (Passwort INDB); ) // Messagedigest Messagedigest.getInstance ("Md5") erstellen. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: : Salzdaten werden in das Message Digest-Objekt MD.UPDATE (SALT) übergeben. des Eingabekennworts [] Digest = Md.Digest (); Message Digest des Kennworts im Datenbanksystem.ArrayCopy (pwdindb, salt_length, digestindb, 0, digestindb.length); Arrays.equals (Digest, DigestIntb)) {// Das Passwort gibt die Passwort -Übereinstimmung Return true zurück; Hexadezimalkennwort * @param Passwort * @return * @throws nosuchalgorithmus -Ausnahme * @Throws UnsupportedenCodingException * /public static String getecryptedpwd (String -Passwort) löscht NoSuchalgorithmexception, UnsupportedencodingException oder Zufälliger Zahlengenerator Securerandom Random = new Securerandom (); Objekt Messagedigest MD = NULL; Objekt Md.Update (Passage.GetBytes ("UTF-8")); Passwort, die Byte -Länge von Salz PWD = New Byte [Digest.Length + Salt_Length]; , 0, PWD, 0, Salt_Length); Passwort verschlüsselt Byte -Array -Format zum Kennwort return bytetohexString (PWD);Testklasse - Client, der Code lautet wie folgt:
Paket com.zyg.security.md5; ; ) String loginuserID = "zyg"; ou t. / Todo automatisch generierter Block e.printstacktrace (); Versuchen Sie {Verschlüsselungspunkte. / Todo automatisch generierter Block e.printstacktrace (); Benutzername, String -Passwort) löscht NoSuchalgorithmException, UnsupportedenCodingException {String pwdindb = (String) Benutzer.get (Benutzername); System.out.println ("existiert dieser Benutzer nicht! ! ! "); return false;}}}