SHA1
paquete com.stone.security; import java.io.bytearrayInputStream; import java.io.file; import java.io.fileInputStream; import java.io.fileOutputStream; import java.security.digestInputStream; import java.security.digestOutputStream; import java.security.MessageGest; importar java.util.arrays; import javax.crypto.mac; import javax.crypto.secretkey; import javax.crypto.secretkeyFactory; import javax.crypto.spec.pbekeyspec; public class Sha {public static void main (String [] args) lanza excepción {CodebyMac ("China op ... &*() ... y 802134 ..."); Encodebysha ("China op ... &*() ... y 802134 ..."); Shafile (); } / ** * Resumen de mensajes usando el algoritmo MAC * @param data * @throws excepción * / public static void encodebymac (string data) lanza la excepción {// keyGenerator keygen = keyGenerator.getInstance ("HMACSHA1"); // tecla SecretKey = KeyGen.GenerateKey (); // Esta clave generada cada vez es diferente, pbekeyspec keySpec = new pbekeyspec ("aleationKey^(^&*^%$". ToCarArray ()); secretkeyFactory keyFactory = secretkactory.getInstance ("pBewithmd5anddes"); SecretKey Key = KeyFactory.generatesCet (keySpec); /**** the ClassS de Metailt the "HenseS de Metails de Hinters de Hinterse Of The ClassS de Hinterse de The TenteS". Código de autenticación "(Mac) algoritmo. * Mac proporciona una forma de verificar la integridad de la información transmitida o almacenada en medios poco confiables basados en claves secretas. * Por lo general, los códigos de verificación de mensajes se utilizan entre dos participantes que comparten una clave secreta para verificar la información transmitida entre los dos. * El mecanismo Mac basado en las funciones de hash de hash también se llama HMAC. Combinada con la clave secreta, * H de los dos cripttográficos se usa para cripttográfica. (como MD5 o SHA-1) */ Mac = Mac.getInstance ("HMACSHA1"); Mac.init (clave); byte [] dest = Mac.Dofinal (data.getBytes ()); System.out.println (dest.length); System.out.println ("Resumen Mac:" + Arrays.ToString (Dest)); } / *** El cifrado SHA1 usa mensajes de digestión de mensajes MessageDigest para manejar* @throws excepción* / public static string codeBysha (string str) lanza la excepción {MessageDigest Sha1; sha1 = MessageDigest.getInstance ("sha1"); // Los siguientes tres no están disponibles // sha1 = MessageDigest.getInstance ("SHA256"); // sha1 = MessageDigest.getInstance ("SHA384"); // sha1 = MessageDigest.getInstance ("SHA512"); sha1.update (str.getbytes ()); // actualizar el resumen del primer byte [] digest = sha1.digest (); // El cálculo hash se completa realizando operaciones finales como el relleno. Después de que se llama a este método, el resumen se restablece. / * * Use la matriz de byte especificada para realizar la actualización final del resumen y completar el cálculo de resumen. * Es decir, este método primero llama a la actualización (entrada), * pasa la matriz de entrada al método de actualización y luego llama a Digest (). */ // byte [] digest = sha1.digest (str.getbytes ()); Cadena hex = toHex (digest); System.out.println ("Sha1 Resumen:" + Hex); devolver hex; } / *** Resumen de datos de archivo* @throws Exception* / public static void shafile () arroja excepción {MessageDigest MessageGest = MessageDigest.getInstance ("Sha1"); DigestoutputStream dos = new DigestoutputStream (nuevo FileOutputStream (nuevo archivo ("ABC.TXT")), MessageDigest); dos.write ("People chino ... & ()) f*(214) admin*". getBytes ()); dos.close (); byte [] digest = MessageDigest.digest (); System.out.println ("Escriba un archivo usando la transmisión, el resumen del archivo es:" + toHex (digest)); DigestInputStream dis = new DigestInputStream (nuevo FileInputStream (nuevo archivo ("ABC.TXT")), MessageDigest); byte [] buf = new Byte [100]; int len; while ((len = dis.read (buf))! = -1) {System.out.println ("La lectura de datos es:" + nueva cadena (buf, 0, len)); } dis.close (); byte [] digest2 = MessageDigest.digest (); // Cuando se lee la transmisión, el archivo está terminado y el resumen es el mismo que cuando está escrito System.out.println ("Use la transmisión para leer el archivo, el resumen del archivo es:" + toHex (digest2)); } / ** * SHA1 Digest es para hexadecimal * @param digest * @return * / private static string toHex (byte [] digest) {StringBuilder sb = new StringBuilder (); int len = digest.length; String out = null; for (int i = 0; i <len; i ++) {// out = integer.toHexString (0xff & digest [i]+0xabcdef); // Agregue cualquier sal de sal = integer.toHexString (0xff & digest [i]); // Método original if (out.length () == 1) {sb.append ("0"); // Si agrega 0 delante de 1 bit} sb.append (out); } return sb.ToString (); }}
MD5
MD5 (Algoritmo de digestión de mensajes 5), la quinta edición del algoritmo de digestión de mensajes. Message Digest es un algoritmo: no importa cuánto tiempo sea los datos originales, el resultado de la digestión de mensajes es de una longitud fija; Es un algoritmo irreversible. Los cambios en cualquier bit bit de los datos originales causarán grandes diferencias en los resultados del Digest del mensaje, y la probabilidad de calcular los datos originales en función de los resultados es extremadamente baja.
El Digest del mensaje puede considerarse como la huella digital de los datos originales. Las diferentes huellas digitales harán que los datos originales sean diferentes.
paquete com.stone.security; import java.io.bytearrayInputStream; import java.io.file; import java.io.fileInputStream; import java.io.fileOutputStream; import java.security.digestInputStream; import java.security.digestOutputStream; import java.security.MessageGest; importar java.util.arrays; import javax.crypto.mac; import javax.crypto.secretkey; import javax.crypto.secretkeyFactory; import javax.crypto.spec.pbekeyspec; public class MD5 {public static void main (String [] args) arroja excepción {EncodebyMac ("China op ... &*() ... & 802134 ..."); Encodebymd5 ("China op ... &*() ... y 802134 ..."); md5file (); } / ** * Resumen de mensajes usando el algoritmo MAC * @param data * @throws excepción * / public static void encodebymac (string data) lanza la excepción {// keyGenerator keygen = keyGenerator.getInstance ("hMacMD5"); // tecla SecretKey = KeyGen.GenerateKey (); // Esta clave generada cada vez es diferente, pbekeyspec keySpec = new pbekeyspec ("aleationKey^(^&*^%$". ToCarArray ()); secretkeyFactory keyFactory = secretkactory.getInstance ("pBewithmd5anddes"); SecretKey Key = KeyFactory.generatesCet (keySpec); /**** the ClassS de Metailt the "HenseS de Metails de Hinters de Hinterse Of The ClassS de Hinterse de The TenteS". Código de autenticación "(Mac) algoritmo. * Mac proporciona una forma de verificar la integridad de la información transmitida o almacenada en medios poco confiables basados en claves secretas. * Por lo general, los códigos de verificación de mensajes se utilizan entre dos participantes que comparten una clave secreta para verificar la información transmitida entre los dos. * El mecanismo Mac basado en las funciones de hash de hash también se llama hmac. Combinada con una clave secreta, * h de cripttográfico se usa cryptogrado para cripttográfico. (como MD5 o SHA-1) */ Mac = Mac.getInstance ("HMACMD5"); } / *** El cifrado MD5 usa mensajes digests MessageDigest para manejar* @throws excepción* / public static string codeBymd5 (String str) lanza la excepción {MessageGest MD5; MD5 = MessageDigest.getInstance ("MD5"); md5.update (str.getbytes ()); // actualizar el resumen del primer byte [] digest = md5.digest (); // El cálculo hash se completa realizando operaciones finales como el relleno. Después de que se llama a este método, el resumen se restablece. / * * Use la matriz de byte especificada para realizar la actualización final del resumen y completar el cálculo de resumen. * Es decir, este método primero llama a la actualización (entrada), * pasa la matriz de entrada al método de actualización y luego llama a Digest (). */ // byte [] digest = md5.digest (str.getbytes ()); Cadena hex = toHex (digest); System.out.println ("Resumen MD5:" + hex); devolver hex; } / *** Resumen de datos de archivo* @throws Exception* / public static void md5file () lanza excepción {MessageDigest MessageGest = MessageGest.getInstance ("MD5"); DigestoutputStream dos = new DigestoutputStream (nuevo FileOutputStream (nuevo archivo ("ABC.TXT")), MessageDigest); dos.write ("People chino ... & ()) f*(214) admin*". getBytes ()); dos.close (); byte [] digest = MessageDigest.digest (); System.out.println ("Escriba un archivo usando la transmisión, el resumen del archivo es:" + toHex (digest)); DigestInputStream dis = new DigestInputStream (nuevo FileInputStream (nuevo archivo ("ABC.TXT")), MessageDigest); byte [] buf = new Byte [100]; int len; while ((len = dis.read (buf))! = -1) {System.out.println ("La lectura de datos es:" + nueva cadena (buf, 0, len)); } dis.close (); byte [] digest2 = MessageDigest.digest (); // Cuando se lee la transmisión, el archivo está terminado y el resumen es el mismo que cuando está escrito System.out.println ("Use la transmisión para leer el archivo, el resumen del archivo es:" + toHex (digest2)); } / ** * MD5 Digest es para hexadecimal * @param digest * @return * / private static string toHex (byte [] digest) {stringBuilder sb = new StringBuilder (); int len = digest.length; String out = null; for (int i = 0; i <len; i ++) {// out = integer.toHexString (0xff & digest [i]+0xabcdef); // Agregue cualquier sal de sal = integer.toHexString (0xff & digest [i]); // Método original if (out.length () == 1) {sb.append ("0"); // Si agrega 0 delante de 1 bit} sb.append (out); } return sb.ToString (); }}PD: Aquí hay dos herramientas de cifrado MD5 más para usted. Los amigos interesados pueden referirse a ello:
Herramienta de cifrado en línea MD5:
http://tools.vevb.com/password/createmd5password
MD5 en línea/hash/sha-1/sha-2/sha-256/sha-512/sha-3/ripemd-160 herramienta de cifrado:
http://tools.vevb.com/password/hash_md5_sha