MD(消息摘要)、MAC(消息认证码)、数字签名的区别

news2024/12/27 13:57:14

MD(消息摘要)、MAC(消息认证码)、数字签名的区别

1.MD(消息摘要)-散列算法

摘要是哈希值,我们通过散列算法⽐如MD5算法就可以得到这个哈希值。摘要只是⽤于验证数据完整性和唯⼀性的哈希值,不管原始数据是什么样的,得到的哈希值都是固定长度的。

不管原始数据是什么样的,得到的哈希值都是固定长度的,也就是说摘要并不是原始数据加密后的密⽂,只是⼀个验证⾝份的令牌。所以我们⽆法通过摘要解密得到原始数据。

2.MAC(消息认证码)

hash算法只能验证数据的完整性,不能防⽌数据被篡改。⽐如:遇见中间⼈攻击,你会发现攻击者对消息进⾏篡改了,但是通过hash算法计算摘要值,你是⽆法知道消息被改动过的。因此这个时候就需要MAC算法了。

MAC值 = mac(消息+密钥)

MAC的特点

跟hash算法⼀样,可以验证数据的完整性。可以验证数据确实是由原始发送⽅发出的。
MAC值⼀般和原始消息⼀起传输,原始消息可以选择加密,也可以选择不加密,通信双⽅会以相同的⽅式⽣成MAC值,然后进⾏⽐较,⼀旦两个MAC值相同表⽰MAC验证正确,否则验证失败。

在这里插入图片描述
消息认证码与消息摘要类似,区别是消息摘要算法只是对数据作摘要计算,而消息认证码涉及到加密过程。

通信双方A和B,共享密钥K。若A向B发送消息时,则A计算MAC,它是消息和密钥的函数,即MAC = C(K,M) 其中,M为输入消息,C为MAC函数,K为共享的密钥,MAC为消息认证码。消息和MAC一起发送给接收方。接收方收到消息后,用相同的密钥进行相同的计算,得到新的MAC,并将接收到的MAC与其计算出的MAC比较。

mac工作原理
在这里插入图片描述

  • A与B共享一个对称密钥K,别人是不知道的。A使用K通过MAC函数计算出消息M的MAC值H1
  • A将消息M和H1发给B
  • B收到M,也用K通过MAC函数对M求出MAC值H2
  • B比较H1和H2。如果相等,表明消息M没有被中途改变。

计算MAC与加密过程非常相似,但有一个重要不同,在对称加密过程中,加密过程是可逆的,但在MAC中,发送方与接收方只进行加密过程。因此MAC算法不需要可逆,只要是单向函数(加密)就可以了。

2 HMAC(基于散列的消息认证码)

Hash-bases Message Authentication Code。简单理解就是为计算MAC值设计的一个MAC函数。

HMAC的基本思想是复用MD5与SHA-1之类现有的消息摘要算法。HAMC利用消息摘要算法,把消息摘要看成一个黑盒子,用共享密钥加密消息摘要,从而得出MAC。

在这里插入图片描述

3.数字签名

MAC不能保证消息的不可抵赖性,⽽数字签名可以保证。因为数字签名使⽤的是公钥密码体制,私钥只有你⾃⼰才知道;⽽MAC使⽤对称加密,既然⼀⽅能够验证你的MAC,就能够伪造你的MAC,因为发送⽅和接收⽅的秘钥是⼀样的。当然如果你在MAC中绑定⼀些关键信息,并通过某些⼿段,让⼀⽅只能⽣成MAC,另⼀⽅只能验证MAC,其实也是可以实现签名效果的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/386308.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【json代码diff效果展示】vue项目 手动实现高仿github的内容diff效果

文章目录1-1 vue-code-diff业务需求 : 思考: 对比两个json字符串,维护增删改的三个数组 遍历,进行三四五次if判断进入不同数组,渲染页面不对呀,数据展示,怎么根据json对应键展示字段呢&#xf…

Linux基础命令-gdisk使用GPT类型创建分区

文章目录 一 命令介绍 二 MBR和GPT的区别 MBR GPT 三 命令语法 四 基本参数 1 常用参数 2 操作菜单说明 五 参考实例 1 对磁盘设备进行分区 2 查看磁盘的所有分区表 命令总结 一 命令介绍 NAME gdisk - Interactive GUID partition table (GPT) manipulato…

VAE--part1

Variational Auto-Encoder, VAE__part1分布变换VAE慢谈VAE 初现分布标准化重参数技巧VAE的本质是什么?VAE的本质结构正态分布?变分在哪里参考博客仅做学习记录,侵删分布变换 VAE和GAN都是生成式模型,它们俩的目标基本一致&#x…

如何在 3dMax 中制作游戏中的战斧模型?

继续给大家分享3dMax教程:如何在3dsMax中制作战斧教程。 介绍 大家好!今天想和大家分享的是用3ds Max制作一把战斧,分享一下制作过程中用到的一些技巧和技巧。这是一个比较基础的教程,包括建模、雕刻、pbr贴图。 概念 这把战斧…

如何利用站内推广和站外推广提高转化率?

在如今的网络时代,拥有一个好的网站是非常重要的。但是,光有一个好的网站是不够的,为了达到我们的目标,需要不断地提高网站的转化率。而在实现这个目标的过程中,站内推广和站外推广是两个非常关键的因素。 站内推广是…

【企业服务器LNMP环境搭建】mysql安装

MySQL安装步骤: 1、相关说明 1.1、编译参数的说明 -DCMAKE_INSTALL_PREFIX安装到的软件目录-DMYSQL_DATADIR数据文件存储的路径-DSYSCONFDIR配置文件路径 (my.cnf)-DENABLED_LOCAL_INFILE1使用localmysql客户端的配置-DWITH_PARTITION_STORAGE_ENGINE使mysql支持…

Web3中文|值得了解:Web3的成功离不开什么?

即使受到负面新闻和部门监管的打击,区块链仍然是Web3应用程序开发、生态发展和主流采用的关键。围绕区块链技术的潜在用例及应用有很多争论,而最近相关讨论似乎已经进入了白热化的阶段。随着监管机构打击质押服务、禁止稳定币交易,以及对NFT支…

Delphi 中 FireDAC 数据库连接(多线程)

参见:Delphi 中 FireDAC 数据库连接(总览)本主题描述了如何在多线程环境下使用FireDAC。一、概述如果满足以下条件,FireDAC是线程安全的。一个连接对象和所有与之相关的对象(如TFDQuery、TFDTransaction等)…

CSS实现动画效果的菜单收起展开图标,html实现动画效果的箭头

效果 实现代码 此处JS代码引入了jquery <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style>.menu-icon{position: absolute;left: 20%;top: 30%;transition: all .3s;}.menu-icon:before, .menu…

Rollup L2 and L3

1. 引言 前序博客有&#xff1a; Rollup DecentralizationRollup去中心化Rollup交易的固化流程 Layer 1&#xff1a;数据可用层Layer 2&#xff1a;执行层Layer 3&#xff1a;链下系统 所有系统设计中&#xff0c;都包含了某种可信元素&#xff0c;用于保护系统safety和live…

滑动窗口最大值:单调队列

239. 滑动窗口最大值 难度困难2154收藏分享切换为英文接收动态反馈 给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 示例…

人像磨皮美颜sdk是什么?磨皮技术详解

每当讨论起美颜sdk的功能&#xff0c;“磨皮”肯定首当其冲&#xff0c;从一开始&#xff0c;这个功能就受到了很多人的欢迎&#xff0c;尤其是当它与美白、美颜结合在一起的时候&#xff0c;更是发挥出了最大的作用&#xff0c;时至今日它的热度依然不减。使用者可以通过磨皮功…

网络应用之css 显示特性

css 显示特性学习目标能够说出标签隐藏设置1. display 属性的使用display 属性是用来设置元素的类型及隐藏的&#xff0c;常用的属性有&#xff1a;none 元素隐藏且不占位置inline 元素以行内元素显示block 元素以块元素显示2. 示例代码<style>.box{/* 将块元素转化为行内…

2023年Java 高级工程师 1380 道面试题(附答案)分享

Java 面试八股文有必要背吗&#xff1f; 我的回答是&#xff1a;很有必要。你可以讨厌这种模式&#xff0c;但你一定要去背&#xff0c;因为不背你就进不了大厂。现如今&#xff0c;Java 面试的本质就是八股文&#xff0c;把八股文面试题背好&#xff0c;面试才有可能表现好。…

工作日志day02

1.云计算&#xff1f; 相关职位 开源软件和linux起源&#xff1a; 自由软件之父&#xff1a;理查德.斯托曼linux之父&#xff1a;林纳斯.本纳第克特.托瓦兹linux发行版 RHEL&#xff1a;Red Hat Enterprise Linux 红帽linux商业公司CentOS:Community Enterprise Operating Sys…

ClickHouse 与 Amazon S3 结合?一起来探索其中奥秘

目录ClickHouse 简介ClickHouse 与对象存储ClickHouse 与 S3 结合的三种方法示例参考架构小结参考资料ClickHouse 简介ClickHouse 是一种快速的、开源的、用于联机分析&#xff08;OLAP&#xff09;的列式数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;由俄罗斯的Yan…

Matlab进阶绘图第4期—三维堆叠柱状图/三维堆积图

三维堆叠柱状图是堆叠图&#xff08;见Matlab论文插图绘制模板第6期&#xff09;在三维空间的拓展。 三维堆叠柱状图不仅可以直观地展示各部分总数的对比&#xff0c;还能够看出各部分在总数中所占的比例&#xff0c;从而使数据更加形像。 当然&#xff0c;三维堆叠柱状图的缺…

RT-Thread Nano(2) - 线程

参考:RT-Thread API参考手册: 线程管理 线程的分类:动态线程,静态线程 动态线程是系统自动从动态内存堆上分配栈空间的线程句柄(程序运行时再分配空间),静态线程是由用户分配栈空间与线程句柄(可以说是程序编译时已经分配好空间) 1.创建线程 创建一个动态线程 rt_thread_t …

[Pytorch] 前向传播和反向传播示例

目录 简介 神经网络训练基本步骤 1. 计算图 2. 前向传播 Forward 3. 计算损失Loss 【损失函数】 4. 反向传播 Backward 5. 使用学习率更新权重【优化器】 样例代码 样例结果 样例图解 简介 PyTorch是一个基于Torch的Python开源机器学习库&#xff0c;用于自然语言处理…

四、发布确认

1、发布确认原理 生产者将信道设置成 confirm 模式&#xff0c;一旦信道进入 confirm 模式&#xff0c;所有在该信道上面发布的消息都将会被指派一个唯一的 ID(从 1 开始)&#xff0c;一旦消息被投递到所有匹配的队列之后&#xff0c;broker就会发送一个确认给生产者(包含消息…