第三方库的哈希算法
# 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
注册只需要在启动时进行一次,后续就可以使用 BouncyCastle 提供的所有哈希算法和加密算法。
# 小结
BouncyCastle 是一个开源的第三方算法提供商;
BouncyCastle 提供了很多 Java 标准库没有提供的哈希算法和加密算法;
使用第三方算法前需要通过 Security.addProvider()
注册。
上次更新: 2024/10/1 17:03:07