Java中的信息摘要算法MessageDigest类用法详解
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(); }
到此这篇关于Java中的信息摘要算法MessageDigest类用法详解的文章就介绍到这了,更多相关信息摘要算法MessageDigest类内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
springboot使用war包部署到外部tomcat过程解析
这篇文章主要介绍了springboot使用war包部署到外部tomcat过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-01-01Redis 集成Spring的示例代码(spring-data-redis)
本篇文章主要介绍了Redis 集成Spring的示例代码(spring-data-redis) ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-09-09
最新评论