java/消息摘要算法&数字签名

一。消息摘要算法

常用摘要算法:

 

以下 (HEX)内容:bc指Bouncy Castle  |  cc指:Apache commons Codec

1。消息摘要算法MD5及MD族(MD2,MD4) 

消息摘要算法应用:

MD算法实现:

 

2。消息摘要算法SHA(安全散列算法)

SHA算法实现:

public class SHA {

    private static String src="SHA摘要算法";

    public static void main(String[] args){
        jdkSHA1(); //SHA摘要算法
    }

    public static void jdkSHA1(){
        try {
            MessageDigest md=MessageDigest.getInstance("SHA");
            md.update(src.getBytes());
            System.out.println("jdk SHA-1:"+ HexBin.encode(md.digest()));
            //jdk SHA-1:3AB4BF7221E8C15FD3E94C0D55DAFFF7B704F47C
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }

    public static void bcSHA1(){
        Digest digest=new SHA1Digest();
        digest.update(src.getBytes(),0,src.getBytes().length);
        byte[] sha1Bytes=new byte[digest.getDigestSize()];
        digest.doFinal(sha1Bytes,0);
        System.out.println("bc sha-1:"+org.bouncycastle.util.encoders.Hex.toHexString(sha1Bytes));
    }

    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("bc sha-224:"+org.bouncycastle.util.encoders.Hex.toHexString(sha224Bytes));
    }

    public static void bcSHA224_2(){
        Security.addProvider(new BouncyCastleProvider);
        //...
    }

    public static void ccSHA1(){
        DigestUtils.sha1Hex(src.getBytes());
        DigestUtils.sha1Hex(src);
    }

    //384/256/512...
}
View Code

SHA算法应用

3。消息摘要算法--MAC

HMAC算法实现:

HMAC算法应用:

二。数字签名

猜你喜欢

转载自www.cnblogs.com/kaixinyufeng/p/9903485.html
今日推荐