Imooc_Java實現消息摘要算法加密_3-2SHA算法實現

原視頻地址
Imooc_Java實現消息摘要算法加密_3-2SHA算法實現

package SHA;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.Security;

import org.apache.commons.codec.binary.Hex;
import org.apache.commons.codec.digest.DigestUtils;
import org.bouncycastle.crypto.Digest;
import org.bouncycastle.crypto.digests.SHA1Digest;
import org.bouncycastle.crypto.digests.SHA224Digest;
import org.bouncycastle.jce.provider.BouncyCastleProvider;


public class SHA {

    private static String src = "imooc security sha";

    public static void main(String[] args) {
        jdkSHA1();
         bcSHA1();
       bcSHA224();
     bcSHA224_2();
     ccSHA1();
    }//main方法結束

    public static void jdkSHA1(){
        //MessageDigest 直接調用靜態方法getInstance 指定md是SHA(既是SHA1)算法的執行者
        try {
            MessageDigest md = MessageDigest.getInstance("SHA");
            md.update(src.getBytes());
            String res = Hex.encodeHexString(md.digest());
            System.out.println("jdkSHA1:"+res);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }//jdkSHA1()方法結束

    public static void bcSHA1(){
        Digest digest = new SHA1Digest();
        digest.update(src.getBytes(), 0, src.getBytes().length);
        //byte[]數組接收結果
        byte[] sha1Bytes = new byte[digest.getDigestSize()];
        digest.doFinal(sha1Bytes, 0);//偏移量爲0即是完整的輸出
        System.out.println("bcSHA1:"+org.bouncycastle.util.encoders.Hex.toHexString(sha1Bytes));
    }//bcSHA1()方法結束



    public static void bcSHA224(){
        Digest digest = new SHA224Digest();
        digest.update(src.getBytes(), 0, src.getBytes().length);
        byte[] sha224Bytes = new byte[digest.getDigestSize()];
        //將摘要結果輸出到輸出數組裏
        digest.doFinal(sha224Bytes, 0);
        System.out.println("bcSHA224:"+org.bouncycastle.util.encoders.Hex.toHexString(sha224Bytes));
    }//bcSHA224()方法結束

    public static void bcSHA224_2(){
        Security.addProvider(new BouncyCastleProvider());
        //練習內容
    }

    public static void ccSHA1(){
        //第一種方式
//      DigestUtils.sha1Hex(src.getBytes());//DigestUtils.sha1Hex(byte[] data)
        System.out.println("ccSHA1 - 1:" + DigestUtils.sha1Hex(src.getBytes()));
        //第二種方式
//      DigestUtils.sha1Hex(src);//DigestUtils.sha1Hex(String data)
        System.out.println("ccSHA1 - 2:" + DigestUtils.sha1Hex(src));
    }//ccSHA1()方法結束

}//SHA類結束
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章