• 廖雪峰Java10加密与安全-3摘要算法-4BouncyCastle


    1.BouncyCastle:

    • 第三方提供的一组加密/哈希算法
    • 提供JDK没有提供的算法
    • RipeMD160哈希算法
    • 官方网站

    2.如何使用第三方提供的算法

    • 2.1 添加第三方jar至classpath
      * jar包下载地址

      * IDEA:project structure-modules-dependencies-添加,选择Jars or directory,添加jar包即可
    • 2.2 注册第三方算法提供方
    • 2.3 正常使用JDK提供的接口
        public static void main(String[] args) throws Exception{
            Security.addProvider(new BouncyCastleProvider());
            MessageDigest md = MessageDigest.getInstance("RipeMD160");
            String s = "hello world";
            md.update(s.getBytes("UTF-8"));
            System.out.println(md.digest().length);
            System.out.println(String.format("%040x",new BigInteger(1,md.digest())));
        }
    
    ## 3.代码示例 ```#java import org.bouncycastle.jce.provider.BouncyCastleProvider;

    import java.math.BigInteger;
    import java.security.MessageDigest;
    import java.security.Security;

    public class SplitString {
    public static void digest(String hashAlggorithm, byte[] input){
    Security.addProvider(new BouncyCastleProvider());
    MessageDigest md;
    try{
    md = MessageDigest.getInstance(hashAlggorithm);
    }catch (Exception e){
    throw new RuntimeException(e);
    }
    md.update(input);
    System.out.println(md.digest().length);
    System.out.println(String.format("%0"+md.digest().length*2+"x",new BigInteger(1,md.digest())));

    }
    public static void main(String[] args) throws Exception{
        String s = "hello 妹子";
        byte[] bs = s.getBytes("UTF-8");
        digest("MD5",bs);
        digest("SHA-1",bs);
        digest("RipeMD160",bs);
    }
    

    }

    <img src="https://img2018.cnblogs.com/blog/1418970/201905/1418970-20190510184836241-2005779009.png" width="500" />
    
    ##    4.总结
    *    BouncyCastle是第三方算法提供商
    *    提供了JDK没有的算法
    *    使用第三方算法前需要通过Security.addProvide()注册
  • 相关阅读:
    二叉树
    tomcat和jvm调优
    服务器正向代理
    LRU算法
    《转载》TCP三次握手中SYN,ACK,Seq三者的关系
    python的字符串、集合、for循环、异常等基础语法
    configparser_配置解析器
    hashlib模块
    悟_面向对象_小游戏和进阶
    面向对象_new,__eq__,__hash__
  • 原文地址:https://www.cnblogs.com/csj2018/p/10846115.html
Copyright © 2020-2023  润新知