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与C#、.NET AES加密、解密 解决方案
    java 类名.class、object.getClass()和Class.forName()的区别 精析
    java instanceof和isInstance的关系 精析
    java 反汇编class文件
    织梦默认分页样式改动 解决分页列表显示,去掉li
    The method Inflate() in android
    leetcode第一刷_Edit Distance
    codeforces round #264(div2)
    android开发游记:SpringView 下拉刷新的高效解决方式,定制你自己风格的拖拽页面
    《linux 内核全然剖析》 chapter 4 80x86 保护模式极其编程
  • 原文地址:https://www.cnblogs.com/AndroidJotting/p/4284964.html
Copyright © 2011-2022 走看看