从01开始 从01开始
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)

peterjxl

人生如逆旅,我亦是行人
首页
  • 计算机科学导论
  • 数字电路
  • 计算机组成原理

    • 计算机组成原理-北大网课
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • JavaSE
  • Java高级
  • JavaEE

    • Ant
    • Maven
    • Log4j
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • Servlet
  • Spring
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC
  • SpringBoot
  • 学习网课的心得
  • 输入法
  • 节假日TodoList
  • 其他
  • 关于本站
  • 网站日记
  • 友人帐
  • 如何搭建一个博客
GitHub (opens new window)
  • JavaSE

    • 我的Java学习路线
    • 安装Java
    • Java数据类型

    • Java多版本配置
    • 面向对象

    • Java核心类

    • IO

    • Java与时间

    • 异常处理

    • 哈希和加密算法

      • 什么是哈希算法
      • 第三方库的哈希算法
        • BouncyCastle
        • 小结
      • MAC算法
      • 加密算法介绍
      • 对称加密算法
      • 口令加密算法
      • 非对称加密算法介绍
      • RSA算法原理(一):数学知识
      • RSA算法原理(二):概述
      • RSA算法原理(三):补充知识
      • Java中的RSA算法
      • DH算法
      • 数字签名
      • SSL和TLS协议介绍
    • Java8新特性

    • 网络编程

    • Java
  • JavaSenior

  • JavaEE

  • JavaWeb

  • Spring

  • 主流框架

  • SpringMVC

  • SpringBoot

  • Java并发

  • Java源码

  • JVM

  • 韩顺平

  • Java
  • Java
  • JavaSE
  • 哈希和加密算法
2023-03-20
目录

第三方库的哈希算法

# 01.第三方库的哈希算法

我们知道,Java标准库提供了一系列常用的哈希算法。但如果我们要用的某种算法,Java标准库没有提供怎么办?可以自己写一个,难度很大;我们可以找一个现成的第三方库,直接使用。

BouncyCastle (opens new window)就是一个提供了很多哈希算法和加密算法的第三方库。它提供了Java标准库没有的一些算法,例如,RipeMD160哈希算法。我们来看一下如何使用BouncyCastle这个第三方提供的算法。   ‍

# BouncyCastle

首先,我们必须把BouncyCastle提供的jar包放到classpath中。这个jar包就是bcprov-jdk18on-xxx.jar​,可以从官方网站 (opens new window)下载,或者从一个jar包的仓库里下载:bcprov-jdk18on 1.72 (opens new window)

Java标准库的java.security​​包提供了一种标准机制,允许第三方提供商无缝接入。我们要使用BouncyCastle提供的RipeMD160算法,需要先把BouncyCastle注册一下:

Security.addProvider(new BouncyCastleProvider());
1

‍

然后使用起来就和使用MD5、SHA算法一样了:

package chapter12Hash;

import org.bouncycastle.jce.provider.BouncyCastleProvider;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.Security;

public class Hash4BouncyCastle {
  public static void main(String[] args) throws Exception{
       // 注册BouncyCastle:
       Security.addProvider(new BouncyCastleProvider());
       // 按名称正常调用:
       MessageDigest md = MessageDigest.getInstance("RipeMD160");
       md.update("HelloWorld".getBytes("UTF-8"));
       byte[] result = md.digest();
       System.out.println(new BigInteger(1, result).toString(16));
  }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

‍

注册只需要在启动时进行一次,后续就可以使用BouncyCastle提供的所有哈希算法和加密算法。

‍

‍

‍

# 小结

BouncyCastle是一个开源的第三方算法提供商;

BouncyCastle提供了很多Java标准库没有提供的哈希算法和加密算法;

使用第三方算法前需要通过Security.addProvider()​注册。

‍

在GitHub上编辑此页 (opens new window)
上次更新: 2023/3/22 11:24:45
什么是哈希算法
MAC算法

← 什么是哈希算法 MAC算法→

Theme by Vdoing | Copyright © 2022-2023 粤ICP备2022067627号-1 粤公网安备 44011302003646号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式