信息摘要算法——MessageDigest类用法
创始人
2024-05-25 01:06:46

目录

碎碎念

MessageDigest 是什么?

常用的方法:

两种getInstance

update

digest

isEqual

SUN提供的常用的算法名称有:

使用的例子:

参考文献:


碎碎念

这是手写RPC的时候遇到的,正好学习一波

MessageDigest 是什么?

java.security.MessageDigest类为应用程序提供信息摘要算法的功能,如 MD5 或 SHA-1或SHA-256 算法。信息摘要是安全的单向哈希函数,它接收任意大小的数据,并输出固定长度的哈希值。

MessageDigest 对象调用getInstance初始化,使用 update 方法处理数据。任何时候都可以调用 reset 方法重置摘要。一旦所有需要更新的数据都已经被更新了,应该调用 digest 方法之一完成哈希计算。

对于给定数量的更新数据,digest 方法只能被调用一次。在调用 digest 之后,MessageDigest 对象被重新设置成其初始状态。

常用的方法:

两种getInstance

  • public static MessageDigest getInstance(String algorithm) throws NoSuchAlgorithmException
    • 返回实现指定摘要算法的 MessageDigest 对象
    • algorithm - 所请求算法的名称
  • public static MessageDigest getInstance(String algorithm,  String provider) throws NoSuchAlgorithmException, NoSuchProviderException
    • 返回实现指定摘要算法的 MessageDigest 对象。
    • algorithm - 所请求算法的名称
    • provider - 提供者的名称。

update

  • public void update(byte[] input)
    • 使用指定的 byte 数组更新摘要

digest

  • public byte[] digest()
    • 通过执行诸如填充之类的最终操作完成哈希计算。在调用此方法之后,摘要被重置

isEqual

  • public static boolean isEqual(byte[] digesta, byte[] digestb)
    • 比较两个摘要的相等性。做简单的字节比较。 
  • 注意:Provider可以通过 java.security.Security.getProviders()
  • 方法获取已注册提供者列表。比较常用的有“SUN”

SUN提供的常用的算法名称有:

  • MD2
  • MD5
  • SHA-1
  • SHA-256
  • SHA-384
  • SHA-512

使用的例子:

static byte[] md5(String key) {MessageDigest md;try {// 返回实现指定摘要算法的 MessageDigest 对象md = MessageDigest.getInstance("MD5");// getBytes(String charsetName): 使用指定的字符集将字符串编码为 byte 序列,并将结果存储到一个新的 byte 数组中byte[] bytes = key.getBytes(StandardCharsets.UTF_8);// 使用指定的 byte 数组更新摘要md.update(bytes);} catch (NoSuchAlgorithmException e) { //NoSuchAlgorithmException: 当请求特定的加密算法但在环境中不可用时,将抛出此异常// 抛出非法状态异常throw new IllegalStateException(e.getMessage(), e);}// 通过执行诸如填充之类的最终操作完成哈希计算。在调用此方法之后,摘要被重置return md.digest();
}

参考文献:

  • MessageDigest用法 - Arthur_Xv - 博客园
  • MessageDigest的功能及用法_moon&sean的博客-CSDN博客
  • dubbo/ConsistentHashLoadBalance.java at 2d9583adf26a2d8bd6fb646243a9fe80a77e65d5 · apache/dubbo · GitHub

相关内容

热门资讯

北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...