Sha1
패키지 com.stone.security; import java.io.bytearrayinputstream; import java.io.file; import java.io.fileInputStream; import java.io.fileoutputStream; java.security.digestinputstream import; Java.Security.DigestOutputStream 가져 오기; java.security.messagegegest; import java.util.arrays; javax.crypto.mac 가져 오기; javax.crypto.secretkey import; javax.crypto.secretkeyfactory import; javax.crypto.spec.pbekeyspec import; 공개 클래스 sha {public static void main (String [] args)은 예외 {encodebymac ( "China Op ... &*() ... & 802134 ..."); Encodebysha ( "China Op ... &*() ... & 802134 ..."); shafile (); } / ** * Mac 알고리즘을 사용한 메시지 요약 * @param data * @throws Exception * / public static void encodebymac (문자열 데이터) 예외 {// keygenerator keygen = keygenerator.getInstance ( "hmacsha1"); // secretkey key = keygen.generatekey (); // 매번 생성 된이 키, pbekeyspec keyspec = new pbekeyspec ( "randomkey^(^&*^%$". toChararray ()); secretKeyfactory keyfactory = incectyfactory.getInstance ( "pbewithmd5anddes"); SecretKey = keyfactory.generatesecret (keyspec); 인증 코드 "(MAC) 알고리즘 * MAC은 비밀 키를 기반으로 신뢰할 수없는 미디어에 전송되거나 저장된 정보의 무결성을 확인하는 방법을 제공합니다. * 일반적으로, 메시지 검증 코드는 비밀 키를 공유하는 두 참가자 사이에 두 사람 사이에 전송 된 정보를 확인하기 위해 사용됩니다. * HMAC에 대한 암호를 기반으로 한 MAC 메커니즘은 비밀을 공유 할 수 있습니다. 해시 함수 (예 : MAC MAC = MAC.GETINSTANCE ( "HMACSHA1"); mac.init (키); 바이트 [] dest = mac.dofinal (data.getBytes ()); System.out.println (dest.length); System.out.println ( "Mac Summary :" + arrays.tostring (dest)); } / *** SHA1 암호화를 사용하여 메시지 Digest MessageDigest를 사용하여* @throws 예외* / public static string encodebysha (String Str)가 예외 {MessageDigest SHA1; SHA1 = MessageDigest.getInstance ( "SHA1"); // 다음 세 가지를 사용할 수 없습니다. // SHA1 = MessageDigest.getInstance ( "SHA384"); // SHA1 = MessageDigest.getInstance ( "SHA512"); sha1.update (str.getBytes ()); // 요약 첫 바이트 업데이트 [] 다이제스트 = sha1.digest (); // 해시 계산은 패딩과 같은 최종 작업을 수행하여 완료됩니다. 이 메소드가 호출되면 요약이 재설정됩니다. / * * 지정된 바이트 배열을 사용하여 요약의 최종 업데이트를 작성하고 요약 계산을 완료하십시오. 즉,이 메소드는 첫 번째 호출 업데이트 (입력)를 호출하고 * 입력 배열을 업데이트 메소드로 전달한 다음 Digest ()를 호출합니다. */ // byte [] digest = sha1.digest (str.getBytes ()); 문자열 hex = Tohex (다이제스트); System.out.println ( "SHA1 요약 :" + hex); 귀환 16 진; } / *** 파일 데이터 요약* @Throws Exception* / public static void shafile ()은 예외 {MessageDigest MessageDigest = MessageDigest.getInstance ( "SHA1"); digestOutputStream dos = new DigestOutputStream (new FileOutputStream (새 파일 ( "abc.txt")), MessageDigest); dos.write ( "중국인 ... & ()) f*(214) admin*". getBytes ()); dos.close (); 바이트 [] digest = messagedigest.digest (); System.out.println ( "스트림을 사용하여 파일을 작성하십시오. 파일 요약은" + tohex (digest)); digestinputStream dis = new DigestInputStream (new FileInputStream (새 파일 ( "abc.txt")), MessageDigest); 바이트 [] buf = 새로운 바이트 [100]; int len; while ((len = dis.read (buf))! = -1) {System.out.println ( "데이터 읽기는" + new String (buf, 0, len)); } dis.close (); 바이트 [] digest2 = MessageDigest.Digest (); // 스트림이 읽히면 파일이 완료되고 다이제스트는 System.out.println ( "파일을 읽으려면 스트림을 사용하면 파일의 다이제스트는 다음과 같습니다." + ToHex (digest2)); } / ** * SHA1 다이제스트는 hexAdecimal * @param digest * @return * / private static string tohex (byte [] digest) {StringBuilder sb = new StringBuilder (); int len = digest.length; 문자열 out = null; for (int i = 0; i <len; i ++) {// out = integer.toHexString (0xff & digest [i]+0xabcdef); // 소금 추가 = integer.toHexString (0xff & digest [i]); // 원본 메소드 if (out.length () == 1) {sb.append ( "0"); // 1 비트 앞에서 0을 추가하면} sb.append (out); } return sb.toString (); }}
MD5
MD5 (메시지 다이제스트 알고리즘 5), 메시지 다이제스트 알고리즘의 다섯 번째 판. Message Digest는 알고리즘입니다. 원래 데이터가 아무리 길든 메시지 다이제스트의 결과는 고정 길이입니다. 돌이킬 수없는 알고리즘입니다. 원래 데이터의 약간의 변화는 메시지 소화 결과에 큰 차이를 유발하며 결과를 기반으로 원래 데이터를 계산할 확률은 매우 낮습니다.
메시지 다이제스트는 원래 데이터의 지문으로 간주 될 수 있습니다. 다른 지문은 원래 데이터를 다르게 만듭니다.
패키지 com.stone.security; import java.io.bytearrayinputstream; import java.io.file; import java.io.fileInputStream; import java.io.fileoutputStream; java.security.digestinputstream import; Java.Security.DigestOutputStream 가져 오기; java.security.messagegegest; import java.util.arrays; javax.crypto.mac 가져 오기; javax.crypto.secretkey import; javax.crypto.secretkeyfactory import; javax.crypto.spec.pbekeyspec import; public class md5 {public static void main (String [] args)은 예외 {encodebymac ( "China Op ... &*() ... & 802134 ..."); encodebymd5 ( "China Op ... &*() ... & 802134 ..."); md5file (); } / ** * Mac 알고리즘을 사용한 메시지 요약 * @param data * @throws Exception * / public static void encodebymac (문자열 데이터) 예외 {// keygenerator keygen = keygenerator.getInstance ( "hmacmd5"); // secretkey key = keygen.generatekey (); // 매번 생성 된이 키, pbekeyspec keyspec = new pbekeyspec ( "randomkey^(^&*^%$". toChararray ()); secretKeyfactory keyfactory = incectyfactory.getInstance ( "pbewithmd5anddes"); SecretKey = keyfactory.generatesecret (keyspec); 인증 코드 "(MAC) 알고리즘 * MAC은 비밀 키를 기반으로 신뢰할 수없는 미디어에 전송되거나 저장된 정보의 무결성을 확인하는 방법을 제공합니다. * 일반적으로, 메시지 검증 코드는 비밀 키를 공유하는 두 참가자 사이에 두 사람 사이에 전송 된 정보를 확인하는 데 사용됩니다. * HMAC에 기반한 MAC 메커니즘은 비밀의 공유와 함께 사용됩니다. 해시 기능 (예 : Mac.getInstance) ( "hmacmd5"(key); } / *** MD5 암호화는 메시지 Digest MessageDigest를 사용하여* @Throws Exception* / public static string encodeBymd5 (String Str)가 예외 {MessageDigest Md5; MD5 = MessageDigest.getInstance ( "MD5"); md5.update (str.getBytes ()); // 요약 첫 바이트를 업데이트합니다 [] 다이제스트 = md5.digest (); // 해시 계산은 패딩과 같은 최종 작업을 수행하여 완료됩니다. 이 메소드가 호출되면 요약이 재설정됩니다. / * * 지정된 바이트 배열을 사용하여 요약의 최종 업데이트를 작성하고 요약 계산을 완료하십시오. 즉,이 메소드는 첫 번째 호출 업데이트 (입력)를 호출하고 * 입력 배열을 업데이트 메소드로 전달한 다음 Digest ()를 호출합니다. */ // byte [] digest = md5.digest (str.getBytes ()); 문자열 hex = Tohex (다이제스트); System.out.println ( "MD5 요약 :" + hex); 귀환 16 진; } / *** 파일 데이터 요약* @Throws Exception* / public static void md5file ()은 예외 {MessageDigest MessageDigest = messageDigest.getInstance ( "md5"); digestOutputStream dos = new DigestOutputStream (new FileOutputStream (새 파일 ( "abc.txt")), MessageDigest); dos.write ( "중국인 ... & ()) f*(214) admin*". getBytes ()); dos.close (); 바이트 [] digest = messagedigest.digest (); System.out.println ( "스트림을 사용하여 파일을 작성하십시오. 파일 요약은" + tohex (digest)); digestinputStream dis = new DigestInputStream (new FileInputStream (새 파일 ( "abc.txt")), MessageDigest); 바이트 [] buf = 새로운 바이트 [100]; int len; while ((len = dis.read (buf))! = -1) {System.out.println ( "데이터 읽기는" + new String (buf, 0, len)); } dis.close (); 바이트 [] digest2 = MessageDigest.Digest (); // 스트림이 읽히면 파일이 완료되고 다이제스트는 System.out.println ( "파일을 읽으려면 스트림을 사용하면 파일의 다이제스트는 다음과 같습니다." + ToHex (digest2)); } / ** * md5 다이제스트는 16 진수 * @param digest * @return * / private static string tohex (byte [] digest) {StringBuilder sb = new StringBuilder (); int len = digest.length; 문자열 out = null; for (int i = 0; i <len; i ++) {// out = integer.toHexString (0xff & digest [i]+0xabcdef); // 소금 추가 = integer.toHexString (0xff & digest [i]); // 원본 메소드 if (out.length () == 1) {sb.append ( "0"); // 1 비트 앞에서 0을 추가하면} sb.append (out); } return sb.toString (); }}추신 : 다음은 두 가지 MD5 암호화 도구가 더 있습니다. 관심있는 친구들은 그것을 참조 할 수 있습니다.
MD5 온라인 암호화 도구 :
http://tools.vevb.com/password/createmd5password
온라인 MD5/HASH/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160 암호화 도구 :
http://tools.vevb.com/password/hash_md5_sha