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

  • 相关阅读:
    圣战结束
    Linux_系统管理_网络配置_命令行配置网络
    Window下MySQL安装配置
    Linux_系统管理_根据进程名kill进程
    Windows下PHP安装配置
    Apache + PHP + MySql windows xp 安装设置
    visual studio 2008生成asp.net网站的问题?
    数据库抽象层PDO和ADOdb
    正则表达式修正符
    linux搭建SVN服务器
  • 原文地址:https://www.cnblogs.com/AndroidJotting/p/4284964.html
Copyright © 2011-2022 走看看