zoukankan      html  css  js  c++  java
  • 信息加密之消息摘要算法的SHA

      SHA是消息摘要算法的一种实现方式,前面已经总结过MD245的实现,接下来就为大家总结一下SHA的实现。

    SHA的jdk实现:

    private static void SHA_JDK(){
            try {
                MessageDigest digest = MessageDigest.getInstance("SHA");//我们可以通过SHASHA-1SHA-384SHA-256SHA-512来获得不同的消息摘要密钥
                digest.update(src.getBytes());
                System.out.println("SHA :"+Hex.encodeHexString(digest.digest()));
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
        }

    SHA的BC实现:

    private static void SHA_BC(){
            Digest digest = new SHA1Digest();
            digest.update(src.getBytes(), 0, src.getBytes().length);
            byte[] shaByte = new byte[digest.getDigestSize()];
            digest.doFinal(shaByte, 0);
            System.out.println("shaByte : "+Hex.encodeHexString(shaByte));
        }

    对于SHA224,JAVA jdk并没有提供实现,下面是利用BC实现的方法:

    private static void SHA224_BC(){
            Digest digest = new SHA224Digest();
            digest.update(src.getBytes(), 0, src.getBytes().length);
            byte[] sha224Byte = new byte[digest.getDigestSize()];
            digest.doFinal(sha224Byte, 0);
            System.out.println("sha224Byte : "+Hex.encodeHexString(sha224Byte));
        }

    对于SHA224还有一种类似JDK的实现方法:

    private static void SHA224_BC_JDK(){
            Security.addProvider(new BouncyCastleProvider());
            try {
                MessageDigest digest = MessageDigest.getInstance("SHA-224");
                digest.update(src.getBytes());
                System.out.println("SHA224_BC_JDK :"+Hex.encodeHexString(digest.digest()));
            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
        }

    最后简单介绍一下CC的SHA实现:

    private static void SHA_CC_Byte(){
    		System.out.println("SHA_CC_Byte_SHA1 : "+DigestUtils.sha1Hex(src.getBytes()));
    		System.out.println("SHA_CC_Byte_SHA256 : "+DigestUtils.sha256Hex(src.getBytes()));
    		System.out.println("SHA_CC_Byte_SHA384 : "+DigestUtils.sha384Hex(src.getBytes()));
    		System.out.println("SHA_CC_Byte_SHA512 : "+DigestUtils.sha512Hex(src.getBytes()));
    	}
    	
    	private static void SHA_CC(){
    		System.out.println("SHA_CC_SHA1 : "+DigestUtils.sha1Hex(src));
    		System.out.println("SHA_CC_SHA256 : "+DigestUtils.sha256Hex(src));
    		System.out.println("SHA_CC_SHA384 : "+DigestUtils.sha384Hex(src));
    		System.out.println("SHA_CC_SHA512 : "+DigestUtils.sha512Hex(src));
    	}
    

      到这里SHA的实现总结完毕。

  • 相关阅读:
    一本通 1259:【例9.3】求最长不下降序列
    一本通 1258:【例9.2】数字金字塔
    洛谷 P1198 [JSOI2008]最大数
    洛谷 P2863 [USACO06JAN]牛的舞会The Cow Prom
    【BZOJ1062】糖果雨(NOI2008)-数形结合+二维树状数组
    【BZOJ4070】雅加达的摩天楼(APIO2015)-分块+最短路
    【BZOJ2326】数学作业(HNOI2011)-递推+矩阵快速幂
    【BZOJ2734】集合选数(HNOI2012)-状压DP
    【BZOJ3213】抛硬币(ZJOI2013)-期望DP+KMP+高精度
    【BZOJ3590】Quare(SNOI2013)-状压DP
  • 原文地址:https://www.cnblogs.com/AndroidJotting/p/4284964.html
Copyright © 2011-2022 走看看