Plusieurs fois, un chiffrement persistant est requis pour le cryptage secret, et le chiffrement à l'heure actuelle utilise MD5. Lorsque vous utilisez un cryptage symétrique, la méthode DES est utilisée
importation java.io.ioException; ; "; chaîne statique finale privée md =" md "; file statique finale statique key =" opeddsaeaddadbcabf "; / ** * algorithme de cryptage MD * @param data * @return * / public static string mDencrypt (String data) { String RontuldeTring = null; ResulteTring;} String statique privé BytehexString (byte [] bytes) {StringBuffer bf = new StringBuffer (bytes.length *); xff) <x) {bf.append ("t");} bf.append (long.tostring (bytes [i] & xff,);} return bf.toString (); à la valeur de clé * @param data * @param key cryption key byte array * @return * @throws exception * / public static string dencrypt (string data, string key) lève exception {if (key == null) {key = key; } octet [] bt = Encrypt (data.getBytes (), key.getBytes ()); Param Data * @ Param Key Encryption Key Byte Array * @return * @throws ioexception * @throws exception * / public static String Desdecrypt (String data, string key) lève l'épisode ioexc, exception {if (data == null) {return null ; ); ] D ATA, BYTE [] KEY) lance une exception {// Générer une source aléatoire de confiance SecureRandom Sr = new SecureRandom (); Créez une usine clé, puis utilisez-le pour convertir deskeyspec à l'objet SecretKey SecretKeyfactory KeyFactory = SecretKeyFactory.getInstance (DES); Cipher.getInstance (DES); Param Données * @Param Key Encryption Key Byte Array * @return * @throws Exception * / private static byte [] Decrypt (byte [] data, byte [] key) exception {// générer un nombre de nombres aléatoires de confiance Nouvelle sec urerandom (); DES); SecretKey SecureKey = KeyFactory. );Ci-dessous, je présenterai un morceau de code pour implémenter des classes de cryptage et de décryptage MD5 en Java
Java implémente les classes de cryptage et de décryptage MD5, avec des classes de test, consultez le code pour plus de détails.
Classe de cryptage et de décryptage MD5 - MYMD5Util, le code est le suivant:
package com.zyg.security.md5; chaîne finale statique hex_nums_str = "0123456789abcdef"; = (Hex.Length () / 2); POS = I * 2; Convertissez le tableau d'octets spécifié en une chaîne hexagonale * @param b * @return * / public static static bytetoHExString (byte [] b) {stringBuffer hexstring = new StringBuffer (); i ++) {String hex = Integer.tohexString (b [i] & 0xff); : :::::::::::::::::::::::::::::::::::- : :::::::::::::::::::::::::::::::::::- ::::::::::::::::::::::::);} return hexstring.toString (); * @Param PasswordIndB * @Return * @throws NosuchalgorithMexception * @ lance unportdedencodingException * / public static boolean validpassword (String Motword, String PasswordIndB) lance nosuchalgorithMexception, UnportdedenCcodEncodingException {// convertir le format de chaîne hex HexStringtoByte (mot de passe Indb); )); : :::::::::::::::::::::::::::::::::::- : :::::::::::::::::::::::::::::::::::- : Les données SALT sont transmises dans l'objet de digestion de message MD.Update (SALT); du mot de passe d'entrée Byte [] digest = md.digest (); Message Digest du mot de passe dans la base de données System.ArrayCopy (PWDINDB, SALT_LENGT, DIGESTIDB, 0, DIGESTINDB.LENGT); Arrays.equals (digest, digestIndb)) {// Le mot de passe renvoie correctement le message de correspondance de mot de passe return true;} else {// Le mot de passe est incorrect et renvoie le message de non-matière de mot de passe return false; Mot de passe hexadécimal * @param mot de passe * @return * @throws nosuchalgorithm exception * @throws UnportEdenCoDingException * / public static static getEnCryptedPwd (String Password) lève NosuchalgorithMException, UnportEnCoDCODEnDendingException {// Déclare le répertoire encrit. Numéro aléatoire Secure Random = New SecureRandom (); Object MessagediGest MD = NULL; objet md.update (mot de passe.getBytes ("utf-8"); Mot de passe, ajoutez la longueur des octets de Salt Pwd = Nouveau octet [digest.length + salt_length]; , 0, PWD, 0, Salt_Length); Mot de passe Format du tableau d'octets crypté pour retourner le mot de passe ByteTohexString (PWD);Classe de test - Client, le code est le suivant:
package com.zyg.security.md5; ; ); Ou t. / TODO Bloc de capture généré par Auto E.PrintStackTrace ();}} / ** * Utilisateur enregistré * * @param username * @param mot de passe * / public static void registre (null; Try {EncryptedPwd = Mymd5Util. / TODO Bloc de capture généré automatiquement E.PrintStackTrace ();}} / ** * Vérification Login * * @param username * @param mot de passe * @return * @throws insupportedEncodingException * @Throws NOS UCHALGORIT Username, String Motway) lève NosuchalgorithMexception, UnsupportEnCoDingException {String pwDindb = (String) users.get (username); System.out.println ("n'existe pas cet utilisateur! ! ! "); retour false;}}}