消息摘要(数字摘要)的理解 -查了很多资料后的感悟

这篇具有很好参考价值的文章主要介绍了消息摘要(数字摘要)的理解 -查了很多资料后的感悟。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Java 密码技术 - 02- 消息摘要(数字摘要)

在开发过程中经常会遇到 MD5、SHA1、SHA256 等词语,这些是加密算法吗?严格意义上讲,这些并不是加密算法,而是消息摘要算法。咱就用人听得懂的话来聊聊“消息摘要”。

1 消息摘要简介

在现实生活中,我们每个人都有指纹,指纹在一定意义是警方破案的有力证据之一。每个人的指纹与生俱来,李四无法盗用张三的指纹,张三也没法篡改自己的指纹。

消息摘要也是如此。消息 —— 无论是任何类型的消息,在计算机中本质上就是数据,一堆二进制 bit 组成的数据,这些数据按照某种规则计算以后的结果是固定的。如果数据发生改变,则计算出来的结果就会变化,这个计算出来的结果就是消息摘要

张三给李四发送一条消息,并且携带这条消息的消息摘要。李四收到消息时,按照相同的计算规则计算得到计算结果,将这个计算结果与张三发送消息时携带的消息摘要进行对比。如果在消息传输过程中,消息被劫持者篡改了内容,那么计算结果与携带的消息摘要的值便不相等,从而可以判断出消息被篡改了。

所以消息摘要,是一种验证数据完整性的算法,是对付信息面临被篡改威胁的策略之一。

1.1 消息摘要的概念

消息摘要:Message Digest,又称为数字摘要(Digital Digest),要高大上还可以将其叫为:单向散列函数(one-way hash function)、哈希函数、杂凑函数等。消息摘要是一个唯一对应一个消息的固定长度的值,由一个单向哈希加密函数对消息进行计算而得到。通俗点说,无论是什么消息、无论什么时间、什么地点,只要采用同样的计算规则(算法),得到的结果都是一样的;并且无论消息长还是短,同一个算法计算得到的长度都是固定的。

1.2 消息摘要的特点

从上面的描述可以看出消息摘要的特点:

1)只要消息不同,对其摘要后产生的结果也不同;
2)相同的消息一定会得到相同的结果;
3)无论消息的长短,计算出来的消息摘要长度是固定的;例如:
MD5 摘要后的长度为 128 个bit;
SHA-1 摘要后的长度为 160 个bit;
4)消息摘要算法是单向的,不可逆。

1.3 常见的消息摘要算法

常见的消息摘要算法有: MD5、SHA-1、SHA-256、SHA-512,其他还有 MD4、SHA-2、SHA-224、SHA-384 等。

2 Java 实现

2.1 MessageDigest 类

Java 中提供了 java.security.MessageDigest 类来实现数字摘要:文章来源地址https://www.toymoban.com/news/detail-439575.html

  1. 首先通过 getInstance 获取实例,入参为摘要算法,即 MD5、SHA-1 之类的;
  2. 调用实例的 digest 方法获取摘要(结果为byte[]);
  3. 由于摘要后的结果为 byte[],不方便阅读,可封装一个十六进制的工具类:
public class HexUtils {
   

    /**
     * 十六进制字符串转 byte[]
     */
    public static byte[] toBytes(String hex) {
   
        if (hex == null || hex.length() < 1) {
   
            return null;
        } else {
   
            byte[] result = new byte[hex.length() / 2];
            int

到了这里,关于消息摘要(数字摘要)的理解 -查了很多资料后的感悟的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包