자주 사용 하 는 메시지 요약 알고리즘 요약
13464 단어 알고리즘SHA 가족MAC 메시지 요약 알고리즘MD 가족
계산법 이 라 할 말 이 없다.디자이너 의 지혜 와 땀 의 결정 이자 시대 발전의 추진력 이다.우리 가 할 수 있 는 일 은 바로 이런 알고리즘 을 적절하게 운용 하여 전 인 류 를 행복 하 게 하면 된다 는 것 이다.
// CC(Commons codec) , jar !
MD 방식
package MD;
/** * MD:MessageDigest---- */
import java.security.MessageDigest;
import org.apache.commons.codec.binary.Hex;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.codec.digest.Md5Crypt;
import org.junit.Test;
/** * MessageDigest * : * , * @author Summer * */
public class Demo {
private static String targetString = "I am Summer!";
/** * MD5 , * JDK * @throws Exception */
@Test
public void test1() throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
byte [] bytes = md.digest(targetString.getBytes());
String result = Hex.encodeHexString(bytes);
System.out.println("MD5 :"+result);
//5b704caf20c179cdf61d7121e59dcd76
}
/** * MD2 , * JDK * @throws Exception */
@Test
public void test2() throws Exception {
MessageDigest md = MessageDigest.getInstance("MD2");
byte [] bytes = md.digest(targetString.getBytes());
String result = Hex.encodeHexString(bytes);
System.out.println("MD5 :"+result);
//387992acc0a756abc7026d635383b0a7
}
/** * MD2 , * JDK * @throws Exception */
@Test
public void test3() throws Exception {
MessageDigest md = MessageDigest.getInstance("MD2");
byte [] bytes = md.digest(targetString.getBytes());
System.out.println(bytes);
}
/** * MD5 , * JDK * @throws Exception */
@Test
public void test4() throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
byte [] bytes = md.digest(targetString.getBytes());
System.out.println(bytes.toString());
}
/** * commons codec MD2, * @throws Exception */
@Test
public void test5() throws Exception {
MessageDigest md = DigestUtils.getMd2Digest();
byte[] bytes = md.digest(targetString.getBytes());
String result = Hex.encodeHexString(bytes);
System.out.println("Commons codec MD2:"+ result);
//387992acc0a756abc7026d635383b0a7
}
/** * commons codec MD5, * , CC , 。 JDK ,cc , * @throws Exception */
@Test
public void test6() throws Exception {
MessageDigest md = DigestUtils.getMd5Digest();
byte[] bytes = md.digest(targetString.getBytes());
String result = Hex.encodeHexString(bytes);
System.out.println("Commons codec MD5:"+ result);
//5b704caf20c179cdf61d7121e59dcd76
System.out.println(DigestUtils.md5Hex(targetString));
//5b704caf20c179cdf61d7121e59dcd76
}
}
SHA 방식
package SHA;
/** * SHA: Security Hash Algorithm ----- */
import java.security.MessageDigest;
import org.apache.commons.codec.binary.Hex;
import org.junit.Test;
public class Demo {
private static String targetString = "I am Summer!";
/** * JDK SHA1 * @throws Exception */
@Test
public void testSHA1() throws Exception {
/* : * // SHA1 : SHA SHA1 MessageDigest md = MessageDigest.getInstance("SHA"); byte[] bytes = md.digest(targetString.getBytes()); String result = Hex.encodeHexString(bytes); System.out.println("JDK SHA1 :\t"+ result); //a621ca634410c2521ef560736a6a9da048f42961 */
/* * : */
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(targetString.getBytes());
String result = Hex.encodeHexString(md.digest());
System.out.println(result);
}
/** * JDK SHA-224 * @throws Exception */
@Test
public void testSHA224() throws Exception {
MessageDigest md = MessageDigest.getInstance("SHA-224");
md.update(targetString.getBytes());
String result = Hex.encodeHexString(md.digest());
System.out.println(result);
//6fb07533ef05a1f1b6a0fbd25f08ed3cbcf17807a507c0224756f06d
}
/** * JDK SHA-384 * @throws Exception */
@Test
public void testSHA384() throws Exception {
MessageDigest md = MessageDigest.getInstance("SHA-384");
md.update(targetString.getBytes());
String result = Hex.encodeHexString(md.digest());
System.out.println(result);
//c640d1c73a8e2078b290f284fce59da103ecfc1c3c9442cc90ebd5f08900d8e6f19551da7b2f213d96dd055bd2759698
}
/** * JDK SHA-256 * @throws Exception */
@Test
public void testSHA256() throws Exception {
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(targetString.getBytes());
String result = Hex.encodeHexString(md.digest());
System.out.println(result);
//8305809696717b31c6765b7ba89cfd67c17ef62c79a700ae4e305fee5ebdf457
}
/** * JDK SHA-512 * @throws Exception */
@Test
public void testSHA512() throws Exception {
MessageDigest md = MessageDigest.getInstance("SHA-512");
md.update(targetString.getBytes());
String result = Hex.encodeHexString(md.digest());
System.out.println(result);
//520abdfdc5e0ac43c795bee9da1cac3fa2f55b8e89f1d33f9a4b83367f4b74cd5d42bfa2c6d4f68c362e64d44ea664244c03c7fd2b7bc167a489fe7129c91156
}
}
MAC 방식
package MAC;
import javax.crypto.KeyGenerator;
import javax.crypto.Mac;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Hex;
import org.junit.Test;
/** * MAC: Message Authentication Code ------ */
public class Demo {
private static String targetString = "I am Summer!";
/** * MAC MD5 * @throws Exception */
@Test
public void hmacMD5() throws Exception {
// KeyGeerator
KeyGenerator keyGenerator = KeyGenerator.getInstance("HmacMD5");
//
SecretKey secretKey = keyGenerator.generateKey();
//
byte[] key = secretKey.getEncoded();
key = Hex.decodeHex(new char[]{'S','u','m','m','e','r','!'});
//
SecretKey restoreSecretKey = new SecretKeySpec(key, "HmacMD5");
// Mac
Mac mac = Mac.getInstance(restoreSecretKey.getAlgorithm());
// Mac
mac.init(restoreSecretKey);
byte[] hmacMD5Bytes = mac.doFinal(targetString.getBytes());
//
String result = Hex.encodeHexString(hmacMD5Bytes);
System.out.println(result);
//8371828a9e53f04977b4d2ceb73ff506
}
}
소총화
MAC 방식 에 대해 그 원 리 는 앞의 두 가지 와 차이 가 많 지 않 고 key 암호 화 권한 을 가 입 했 을 뿐이다.코드 참조!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【Codility Lesson3】FrogJmpA small frog wants to get to the other side of the road. The frog is currently located at position X and wants to get to...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.