图解系列--认证

单向散列函数

1.什么是单向散列函数
单向散列函数有一个输入和一个输出,其中输入称为消息,输出称为散列值。单向散列函数可以根据消息的内容计算出散列值,而散列值就可以被用来检查消息的完整性。
在指定的散列函数处理下,无论输入的字节序列尺寸如何,输出的尺寸是固定的。

应用:
1.对输入的字节序列1,采用单向散列函数计算出散列值。将散列值1保存到可信的安全位置。
2.之后某个时刻,再次对字节序列2输入,采用单向散列函数计算散列值2。
3.若散列值1等于散列值2,则可认为字节序列1和字节序列2是一致的。即每个字节都是相等的,且长度一致。

2.单向散列函数需具备的性质
_1.根据任意长度的消息计算出固定长度的散列值
_2.能够快速计算出散列值
_3.消息不同散列值也不同
弱抗碰撞性:要找到和该指定消息具有相同散列值的另外一条消息是非常困难的。
强抗碰撞性:要找到散列值相同的两条不同的消息是非常困难。
_4.具备单向性
即无法通过散列值反算出输入消息。

单向散列过程,有时也叫消息摘要过程。

3.常用的单向散列函数
_1.MD4、MD5
能够产生128比特的散列值。MD是消息摘要的缩写。
_2.SHA-1、SHA-256、SHA-384、SHA-512
在这里插入图片描述
_3.SHA-3
最新的标准

4.应该使用哪种单向散列函数呢
MD5是不安全的,因此不应该使用。
SHA-1除了用于对过去生成的散列值进行校验之外,不应该被用于新的用途,而是应该迁 移到 SHA-2。
SHA-2 有效应对了针对 SHA-1 的攻击方法,因此是安全的,可以使用。
SHA-3 是安全的,可以使用。

5.攻击
_1.原像攻击,第二原像攻击
原像攻击是指给定一个散列值,找出具有该散列值的任意消息;第二原像攻击是指给定一条消息1,找出另外一条消息2,消息2的散列值和消息1相同。
_2.生日攻击
生日攻击或者冲突攻击,这是一种试图破解单向散列函数的“强抗碰撞性”的攻击。找到散列值相同的两条消息,而散列值则可以是任意值。

6.总结
单向散列函数可以解决消息完整性(一致性)验证,但无法解决验证消息发送者是合法发送者。验证消息发送者是否合法,是认证的任务。

消息认证码

消息认证码,可以同时识别出篡改和伪装。
1.什么是消息认证码
消息认证码是一种确认完整性并进行认证的技术。
消息认证码的输入包括任意长度的消息和一个发送者与接收者之间共享的密钥,它可以输出固定长度的数据,这个数据称为MAC值。
消息认证码中则需要使用发送者与接收者之间共享的密钥。

2.消息认证码的实现方法
_1.使用单向散列函数实现
HMAC 是一种使用单向散列函数来构造消息认证码的方法。使用SHA-1 、SHA-224 、SHA-256 、SHA-384 、SHA-512 所构造的 HMAC, 分别称为 HMAC-SHA1、HMAC-SHA-224、HMAC-SHA-256、HMAC-SHA-384、HMAC-SHA-512。

_2.使用分组密码实现
将分组密码的密钥作为消息认证码的共享密钥来使用,并用CBC模式将消息全部加密。
此时,初始化向量(IV)是固定的。由于消息认证码中不需要解密,因此将除最后一 个分组以外的密文部分全部丢弃,而将最后一个分组用作MAC 值。由于CBC模式的最后一个分组会受到整个消息以及密钥的双重影响,因此可以将它用作消息认证码。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux 定时执行脚本

先写一个简单的shell脚本用来测试定时执行脚本 [rootVM-12-12-centos wz]# cat shell_cron_test.sh #!/bin/bashif [ -f "/home/wz/cron_test.txt" ];thennum$(($(wc -l /home/wz/cron_test.txt | cut -d -f 1)1))elsenum1 fi echo "$(date "%y-%m-%d …

Flume的安装部署及常见问题解决

1.安装地址 (1) Flume官网地址:http://flume.apache.org/ (2)文档查看地址:http://flume.apache.org/FlumeUserGuide.html (3)下载地址:http://archive.apache.org/dist…

利用SD存储介质扩展MAXQ20000的非易失性数据存储空间

SD存储卡是一种可移动存储介质,通常用于相机、手机、平板电脑等设备中存储照片、视频、音乐等数据。SD存储卡的全称为Secure Digital Memory Card,是由SD Card Association制定的一种标准格式。它具有体积小、存储容量大、读写速度快、价格低廉等优点。目…

在线随机字符串生成工具

具体请前往:在线随机字符串生成器--通过该工具生成动态复杂随机密码,随机字符串等,加密盐等

PC业务校验(已有该名称,已有该编码)

rules: {name: [{ required: true, message: "部门名称不能为空", trigger: "blur" },{min: 2,max: 10,message: "部门名称的长度为2-10个字符",trigger: "blur",},{trigger: "blur",validator: async (rule, value, callba…

命令执行相关函数及各类命令执行绕过技巧

相关函数 (命令注入) 命令执行的绕过

DSP2335的LED工程笔记

首先是确定时钟 在技术参考中,找到时钟章节 只能观察每个寄存器,才能看到寄存器控制那个外设的时钟 第二找到对应GPIO以及寄存器; 在我板子里面的原理图是 但是TI的提供的库函数是分ABC的,刚开始就不知道怎麽分。GPIO68到GPIO6…

4.Pod详解【四】

文章目录 4. Pod详解4.1 Pod介绍4.1.1 Pod结构4.1.2 Pod定义 4.2 Pod配置4.2.1 基本配置4.2.2 镜像拉取4.2.3 启动命令4.2.4 环境变量4.2.5 端口设置4.2.6 资源配额 4.3 Pod生命周期4.3.1 创建和终止4.3.2 初始化容器4.3.3 钩子函数4.3.4 容器探测4.3.5 重启策略 4.4 Pod调度4.…

支持4KHz回报还能无线充电,简约不简单的雷柏VT3S游戏鼠标上手

这两年国产鼠标的表现很让人惊喜,不仅外观做工越来越精细,配置也越来越强大,当然价格依然亲民。现在很容易找到一款搭载高端传感器、响应速度快、电池续航时间长,并且还支持无线充电的全能型鼠标。 我之前用雷柏的鼠标比较多&…

Hive 定义变量 变量赋值 引用变量

Hive 定义变量 变量赋值 引用变量 变量 hive 中变量和属性命名空间 命名空间权限描述hivevar读写用户自定义变量hiveconf读写hive相关配置属性system读写java定义额配置属性env只读shell环境定义的环境变量 语法 Java对这个除env命名空间内容具有可读可写权利; …

【STM32】ADC(模拟/数字转换)

一、ADC的简介 1.什么是ADC 1)将【电信号】-->【电压】-->【数字量】 2)ADC可以将引脚上连续变化的模拟电压转换为内存中存储的数字量,建立模拟电路到数字电路的桥梁。 3)12位逐次逼近型ADC,1us转换时间&#xf…

内容运营策略:个性化推荐

一、推荐系统流程 典型的推荐系统包括3个部分,即召回层( Recall )、排序层( Rank )和重排层( ReRank )。 1.召回层( Recall ) 召回层主要是从全量库中首先获取用户可能感兴趣的候选集,是推荐系…

【Qt开发流程之】窗口部件

qt类关系图 创建Qt项目时,发现提供的窗体默认 基类有:QMainWindow、QDialog、QWidget这三种。 之后,你会发现,这3中窗体在UI交互中,用的也是最多的。 以下是Qt类关系图: 基础窗口控件QWidget 由上图可以…

Swin Transformer

Swin Transformer 简介 下采样的层级设计,能够逐渐增大感受野。采用window进行注意力计算,极大降低了内存消耗,避免了整张图像尺寸大小的qkv矩阵滑窗操作包括不重叠的 local window,和重叠的 cross-window。不重叠的local window…

volatile 无法保证原子性 案例展示

volatile 无法保证原子性 在 Java 中,原子性是指一个操作是不可中断的,要么都执行要么都不执行。 但是 volatile 修饰的变量,只是保证了从主内存加载到工作内存的值是最新的,并不能保证对变量的操作是原子性的 变量的写操作和读…

关于缓存和数据库一致性问题的深入研究

如何保证缓存和数据库一致性,这是一个老生常谈的话题了。 但很多人对这个问题,依旧有很多疑惑: 到底是更新缓存还是删缓存?到底选择先更新数据库,再删除缓存,还是先删除缓存,再更新数据库&…

Spring Boot中实现支付宝、微信和银联支付的功能

Spring Boot中实现支付宝、微信和银联支付的功能 在Spring Boot中实现支付宝、微信和银联支付的功能,通常需要使用它们各自的SDK(Software Development Kit)。以下是一个简单的示例代码,演示了如何在Spring Boot项目中集成支付宝…

操作系统:操作系统教程第六版(骆斌、葛季栋、费翔林)习题一计算机操作系统概述

目录 前言1. 思考题2. 应用题 前言 本系列文章是针对操作系统教程第六版(骆斌、葛季栋、费翔林)的习题解答,其中简答题部分为博主自己搜索整理的,错漏之处在所难免。应用题部分有答案为依据。 1. 思考题 (1&#xf…

vscode设置代码模板

一键生成vue3模板代码 效果演示 输入vue3 显示快捷键 按回车键 一键生成自定义模板 实现方法 进入用户代码片段设置 选择片段语言 vue.json输入自定义的代码片段 prefix是触发的内容,按自己的喜好来就行; body是模板代码,写入自己需要的…

java springboot 在测试类中声明临时Bean对象

上文 java springboot在当前测试类中添加临时属性 不影响application和其他范围 中 我们讲了怎么在测试类中设置临时属性 但是 如果我们想设置临时的Bean呢? 其实做过几个项目的人都会理解 我们很多功能 需要一些第三方bean才能完成 那么 我们可能存在需要用第三方b…