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的实现总结完毕。

  • 相关阅读:
    2016 Multi-University Training Contest 1 solutions BY HIT
    Unicode 码表
    用 lambda 表达式 对 List 进行排序
    Linux的sed命令介绍
    Linux下的NTP服务搭建
    Linux网络配置(ip命令及配置文件)
    Linux的bash脚本编程(if语句和循环语句)
    Linux新手必须掌握的命令(2)
    Linux的文件查找
    bash中的变量
  • 原文地址:https://www.cnblogs.com/AndroidJotting/p/4284964.html
Copyright © 2011-2022 走看看