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

  • 相关阅读:
    java中栈内存和堆内存的简单理解
    java中构造函数与一般函数的区别

    另一部漫画
    海边的卡夫卡
    11-12
    这篇大概值一百万吧
    我的千岁寒
    11-9
    嗯……………股票已经涨的我不想上班了
  • 原文地址:https://www.cnblogs.com/AndroidJotting/p/4284964.html
Copyright © 2011-2022 走看看