자주 사용 하 는 메시지 요약 알고리즘 요약

오늘 우연히 소식 요약 알고리즘 에 관 한 몇 가지 지식 을 배 웠 습 니 다.개인 적 으로 좋 습 니 다.옛말 에 "기억력 이 나 쁜 것 보다 못 하 다" 는 말 에 따라 나 는 몇 줄 의 코드 를 찍 었 다.
계산법 이 라 할 말 이 없다.디자이너 의 지혜 와 땀 의 결정 이자 시대 발전의 추진력 이다.우리 가 할 수 있 는 일 은 바로 이런 알고리즘 을 적절하게 운용 하여 전 인 류 를 행복 하 게 하면 된다 는 것 이다.
//          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 암호 화 권한 을 가 입 했 을 뿐이다.코드 참조!

좋은 웹페이지 즐겨찾기