Sha1
Package Com.stone.Security; Importer java.io.ByteArrayInputStream; Importer java.io.file; import java.io.fileInputStream; Importer java.io.fileOutputStream; Importer java.security.digestStinputStream; Importer java.security.digestOutStstream; Importer Java.Security.MessagediGest; import java.util.arrays; import javax.crypto.mac; Importer Javax.crypto.SecretKey; Importer Javax.crypto.SecretKeyFactory; Importer javax.crypto.spe.pbekeyspec; classe publique Sha {public static void main (String [] args) lève une exception {EncodeBymac ("Chine op ... & * () ... & 802134 ..."); EncodeBysha ("Chine op ... & * () ... & 802134 ..."); shafile (); } / ** * Résumé des messages à l'aide de l'algorithme Mac * @param data * @throws exception * / public static void encodeByMac (String data) lève exception {// keyGenerator keygen = keyGenerator.getInSitance ("hmacsha1"); // SecretKey key = keygen.generateKey (); // Cette clé générée à chaque fois est différente, pBekeySpec KeySpec = new PBEKEYSpec ("randomKey ^ (^ & * ^% $". ToCharArray (); SecretKeyFactory KeyFactory = SecretKeyFactory.getInstance ("PbewithMmd5andDes"); SecretKey Class = THELESS OFFACTOR "Message Authentication Code" (Mac). Fonction de hash (comme MD5 ou SHA-1) * / mac mac = mac.getInstance ("hmacsha1"); mac.init (clé); octet [] dest = mac.dofinal (data.getBytes ()); System.out.println (dest.length); System.out.println ("Résumé Mac:" + Arrays.Tostring (dest)); } / ** * SHA1 Encryption utilise le message digest MessagediGest pour gérer * @throws exception * / public static String encodeBysha (String str) lève l'exception {MessagediGest Sha1; sha1 = MessagediGest.getInstance ("sha1"); // Les trois suivants ne sont pas disponibles // sha1 = MessagediGest.getInstance ("Sha256"); // sha1 = messagediGest.getInstance ("sha384"); // sha1 = messagediGest.getInstance ("sha512"); sha1.update (str.getBytes ()); // Mette à jour le résumé de premier octet [] digest = sha1.digest (); // Le calcul du hachage est terminé en effectuant des opérations finales telles que le rembourrage. Une fois cette méthode appelée, le résumé est réinitialisé. / * * Utilisez le tableau d'octets spécifié pour effectuer la mise à jour finale du résumé et terminer le calcul du résumé. * Autrement dit, cette méthode appelle d'abord la mise à jour (entrée), * transmet le tableau d'entrée à la méthode de mise à jour, puis appelle Digest (). * / // byte [] digest = sha1.digest (str.getBytes ()); String hex = tohex (digest); System.out.println ("SHA1 Résumé:" + Hex); retour Hex; } / ** * Résumé des données du fichier * @throws exception * / public static void shaFile () lève l'exception {messagediGest MessagediGest = MessagediGest.getInstance ("sha1"); DigestOutputStream doss = new DigestOutputStream (new FileOutputStream (nouveau fichier ("abc.txt")), messagediGest); DOS.WRITE ("Personnes chinois ... & ()) f * (214) Admin *". GetBytes ()); dos.close (); octet [] digest = messagediGest.digest (); System.out.println ("Écrivez un fichier à l'aide du flux, le résumé du fichier est:" + tohex (digest)); DigesInputStream dis = new DigesInputStream (new FileInputStream (nouveau fichier ("ABC.txt")), MessagediGest); octet [] buf = nouveau octet [100]; int len; while ((len = dis.read (buf))! = -1) {System.out.println ("La lecture des données est:" + nouvelle chaîne (buf, 0, len)); } dis.close (); octet [] digest2 = messagediGest.digest (); // Lorsque le flux est lu, le fichier est terminé et le digest est le même que lorsqu'il est écrit System.out.println ("Utilisez le flux pour lire le fichier, le digest du fichier est:" + tohex (Digest2)); } / ** * Sha1 Digest est à hexadecimal * @param digest * @return * / private static string tohex (byte [] digest) {StringBuilder sb = new StringBuilder (); int len = digest.length; String out = null; pour (int i = 0; i <len; i ++) {// out = Integer.tohexString (0xff & digest [i] + 0xabcDef); // ajouter n'importe quel sel out = Integer.tohexString (0xff & digest [i]); // méthode d'origine if (out.length () == 1) {sb.append ("0"); // si vous ajoutez 0 devant 1 bit} sb.append (out); } return sb.toString (); }}
Md5
MD5 (algorithme de digestion de message 5), la cinquième édition de l'algorithme de digestion de message. Message Digest est un algorithme: quelle que soit la durée des données d'origine, le résultat du message Digest est d'une longueur fixe; Il s'agit d'un algorithme irréversible. Les changements dans n'importe quel bit des données d'origine entraîneront de grandes différences dans les résultats du message de message, et la probabilité de calculer les données d'origine en fonction des résultats est extrêmement faible.
Le message de message peut être considéré comme l'empreinte digitale des données d'origine. Différentes empreintes digitales rendront les données d'origine différentes.
Package Com.stone.Security; Importer java.io.ByteArrayInputStream; Importer java.io.file; import java.io.fileInputStream; Importer java.io.fileOutputStream; Importer java.security.digestStinputStream; Importer java.security.digestOutStstream; Importer Java.Security.MessagediGest; import java.util.arrays; import javax.crypto.mac; Importer Javax.crypto.SecretKey; Importer Javax.crypto.SecretKeyFactory; Importer javax.crypto.spe.pbekeyspec; classe publique MD5 {public static void main (String [] args) lève une exception {EncodeByMac ("Chine op ... & * () ... & 802134 ..."); EncodeByMD5 ("Chine op ... & * () ... & 802134 ..."); md5file (); } / ** * Résumé des messages à l'aide de l'algorithme Mac * @param data * @throws exception * / public static void encodeByMac (String data) lève exception {// keyGenerator keygen = keyGenerator.getInSitance ("hmacmd5"); // SecretKey key = keygen.generateKey (); // Cette clé générée à chaque fois est différente, pBekeySpec KeySpec = new PBEKEYSpec ("randomKey ^ (^ & * ^% $". ToCharArray (); SecretKeyFactory KeyFactory = SecretKeyFactory.getInstance ("PbewithMmd5andDes"); SecretKey Class = THELESS OFFACTOR "Message Authentication Code" (Mac). Fonction de hash (comme MD5 ou SHA-1) * / mac mac = mac.getInstance ("hmacmd5"); } / ** * MD5 Encryption utilise le message digest MessagediGest pour gérer * @throws exception * / public static String encodeByMD5 (String Str) lève l'exception {MessagediGest MD5; MD5 = MessagediGest.getInstance ("MD5"); md5.update (str.getBytes ()); // Mette à jour le résumé de premier octet [] digest = md5.digest (); // Le calcul du hachage est terminé en effectuant des opérations finales telles que le rembourrage. Une fois cette méthode appelée, le résumé est réinitialisé. / * * Utilisez le tableau d'octets spécifié pour effectuer la mise à jour finale du résumé et terminer le calcul du résumé. * Autrement dit, cette méthode appelle d'abord la mise à jour (entrée), * transmet le tableau d'entrée à la méthode de mise à jour, puis appelle Digest (). * / // byte [] digest = md5.digest (str.getBytes ()); String hex = tohex (digest); System.out.println ("Résumé MD5:" + Hex); retour Hex; } / ** * Résumé des données du fichier * @throws Exception * / public static void md5file () lève une exception {messagediGest MessagediGest = MessagediGest.getInstance ("md5"); DigestOutputStream doss = new DigestOutputStream (new FileOutputStream (nouveau fichier ("abc.txt")), messagediGest); DOS.WRITE ("Personnes chinois ... & ()) f * (214) Admin *". GetBytes ()); dos.close (); octet [] digest = messagediGest.digest (); System.out.println ("Écrivez un fichier à l'aide du flux, le résumé du fichier est:" + tohex (digest)); DigesInputStream dis = new DigesInputStream (new FileInputStream (nouveau fichier ("ABC.txt")), MessagediGest); octet [] buf = nouveau octet [100]; int len; while ((len = dis.read (buf))! = -1) {System.out.println ("La lecture des données est:" + nouvelle chaîne (buf, 0, len)); } dis.close (); octet [] digest2 = messagediGest.digest (); // Lorsque le flux est lu, le fichier est terminé et le digest est le même que lorsqu'il est écrit System.out.println ("Utilisez le flux pour lire le fichier, le digest du fichier est:" + tohex (Digest2)); } / ** * MD5 Digest est à hexaDeCImal * @param digest * @return * / private static String tohex (byte [] digest) {StringBuilder sb = new StringBuilder (); int len = digest.length; String out = null; pour (int i = 0; i <len; i ++) {// out = Integer.tohexString (0xff & digest [i] + 0xabcDef); // ajouter n'importe quel sel out = Integer.tohexString (0xff & digest [i]); // méthode d'origine if (out.length () == 1) {sb.append ("0"); // si vous ajoutez 0 devant 1 bit} sb.append (out); } return sb.toString (); }}PS: Voici deux autres outils de cryptage MD5 pour vous. Les amis intéressés peuvent y faire référence:
Outil de cryptage en ligne MD5:
http://tools.vevb.com/password/createmd5password
MD5 / HASH / SHA-1 / SHA-2 / SHA-256 / SHA-512 / SHA-3 / RIMEMD-160 Tool:
http://tools.vevb.com/password/hash_md5_sha