单向散列函数(哈希)【密码学】(一)

news2024/11/17 13:18:52

目录

一、前言:密码学有什么用?

 二、单向散列函数

1、单向函数 

2、散列函数 

3、单向散列函数 

三、怎么解决完整性问题 

四、如何设置合适的安全强度 


一、前言:密码学有什么用?

 二、单向散列函数

单向散列函数就是用来解决“信息完整性”这一问题的。

下面先介绍一下单向函数散列函数

1、单向函数 

概念:正向计算容易,逆向计算困难的函数。

2、散列函数 

概念:把任意大小的输入,转成固定长度的数据的函数。

通常把转换后的数据称为散列值(哈希值)。

散列值碰撞:存在两个或多个数据的散列值相同。

如何降低散列值碰撞的可能?让散列值长度更长。

但同时也要权衡好性能问题(一个好的散列函数,散列值应该是均匀分布的)。

3、单向散列函数 

既是单向函数,又是散列函数。

核心:

☆逆向运算困难

☆构造碰撞困难

雪崩效应

输入数据的微小变化,就会导致输出数据的巨大变化。

严格雪崩效应指的是,如果输入数据的一位反转,输出数据的每一位都有50%的概率会发生变化。

一个使用于密码学的单向散列函数,就应该具有雪崩效应的特点,如果一个单向散列函数具有雪崩效应,那么对于给定的数据,构造出一个新的、具有相同散列值的数据是困难的。

三、怎么解决完整性问题 

完整性是什么?

数据未经授权,不可更改。

由于逆向运算困难,虽然存在具有相同散列值的两个或者多个数据,但是对于一个好的单向散列函数来说,刻意寻找这样的数据是困难的。如果困难程度足够大,我们就有足够信心认为,如果散列值没有变化,它对应的输入数据也没有变化。


所以,单向函数和散列函数的组合,单向散列函数,就可以帮助我们解决完整性问题。


假如我们收到了一段数据,我们就可以重新计算这段数据的散列值。如果我们还可以获得数据发送者计算的散列值,我们就可以对比新计算的散列值和接收到的散列值

如果两个散列值是相同的,我们就可以认为这段数据是完整的;否则,这段数据就是被篡改过的。

该选择什么样的单向散列函数,它的破解难道才能足够大?稍后讲解

怎么能够安全地获得数据发送者计算的散列值? 晚些讲解

应用举例:

如在这个网站中,我们下载的文件可以生成一个MD5散列值,与它网站中给出的MD5值进行比对,如果是一样的,说明我们下载的文件没有篡改。

 

 

 

 

四、如何设置合适的安全强度 

通常用“位”来表述。

N位的安全强度表示破解一个算法需要2^N(2的N次方)次运算。

18位,按现在的计算机运算速度计算,大约只需要4.34分钟。

64位,破解成本大概是5万美元左右。

128位,按现有的计算能力,破解它需要一千万个十亿年。

安全强度会变吗?

 一个算法的安全强度表示一成不变的,随着安全分析的进步,几乎所有密码学算法的安全强度都会衰减。一个好的安全协议,一个考虑备份计划和应急计划。

使用多大的安全强度? 

推荐指标:

美国的NIST

德国的BSI

欧洲的ECRYPT-CSA

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

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

相关文章

哈工大计算机网络传输层协议详解之:可靠数据传输的基本原理

哈工大计算机网络传输层协议详解之:可靠数据传输的基本原理 可靠数据传输原理 什么是可靠? 不错、不丢、不乱 可靠数据传输协议 可靠数据传输对应用层、传输层、链路层都很重要 网络Top-10问题 信道的不可靠特性决定了可靠数据传输协议(rdt)的复杂性…

【最全】如何不写代码将 Dicom 图像转 Nifti 格式, 7种工具任你选!

大多数医学成像设备以复杂的 DICOM 格式(后缀 .dcm)的变体存储图像。许多科学工具希望医学图像以更简单的 NIfTI 格式(后缀 nii.gz)存储。事实上,我们做深度学习基本都是使用的 nii.gz 格式或者 nii 格式。 那么,如何将 dicom 格…

一文吃透 CSS Flex 布局

原文链接:一文吃透 CSS Flex 布局 教学游戏 这里有两个小游戏,可用来练习 flex 布局。 塔防游戏 送小青蛙回家 Flexbox 概述 Flexbox 布局也叫 Flex 布局,弹性盒子布局。 它决定了元素如何在页面上排列,使它们能在不同的屏幕…

Mysql索引、事务以及存储引擎

目录 一、索引 1.概述 2.作用 3.索引的缺点 4.创建索引的原则依据 5.索引分类和创建 5.1普通索引 5.2唯一索引 5.3主键索引 5.4组合索引(单列索引与多列索引) 5.5全文索引(FULLTEXT) 6.查看索引 7.删除索引 二、事务…

测试必会技能之接口性能测试方案你会不会写?

目录 一、 性能测试术语解释 二、 性能测试方法及目标 三、 性能需求分析 四、 性能测试范围 五、 并发数计算方法 六、 性能测试用例与场景 七、 性能测试工具选择 八、 性能测试结果分析 九、 性能测试通过标准 总结: 一、 性能测试术语解释 …

腾讯云服务器可用区什么意思?

腾讯云服务器可用区什么意思?可用区(Zone)是指腾讯云在同一地域内电力和网络互相独立的物理数据中心,一个可用区故障不会影响另一个可用区的正常运行,所以可用区用于构建高容灾、高可靠性应用。腾讯云服务器网来详细说…

java为什么不支持多继承

Java为什么不支持多继承 前面我们提到过“继承则好比武侠中的传承血脉,子类可以继承父类的属性和方法,并且可以根据需要进行自我扩展,这样就不用从头造轮子,提高了代码的重用性和可维护性。”,在java中支持接口实现多继…

龙芯电脑(LoongArch)如何升级BIOS(UEFI固件)

龙芯UEFI 获取地址(包括3A5000 台式机,笔记本,3C5000 服务器): gitee: https://gitee.com/loongson/Firmware github: https://github.com/loongson/Firmware 根据自身机型选择相应的固件(Image目录有相…

第七章——微分方程

注://之后的都是注释,不是过程。 一、求常系数线性齐次微分方程的通解 1.一般形式:ypyqy0。 2.齐次:“齐次”的含义就是次数相等,ypyqy0都是一次幂,所以是齐次线性微分方程,如果说加上一个常…

有理函数积分

有理函数积分,一共分为三步: ①有理函数拆分 ②求待定系数 ③积分 一、有理函数拆分 有理函数拆分就是需要把被积函数拆开成若干项简单真分式相加。 (真分式:分子最高次幂<分母最高次幂) 简单真分式&#x…

自定义注解实现数据脱敏

自定义注解实现数据脱敏 在实际开发中经常会遇到有一些信息不能全部展示用户,需要隐藏(可以叫脱敏)一部分的情况比如地址,电话,手机号,身份证等。 脱敏的做法目前我知道的方法有: 1)…

JMeter 性能测试基本过程及示例,希望可以帮到你

目录 jmeter 为性能测试提供了一下特色: 基本过程 总结 jmeter 为性能测试提供了一下特色: jmeter 可以对测试静态资源(例如 js、html 等)以及动态资源(例如 php、jsp、ajax 等等)进行性能测试 jmeter 可…

(CVPR-2014)DeepPose:通过深度神经网络进行人体姿态估计

DeepPose:通过深度神经网络进行人体姿态估计 论文题目:DeepPose: Human Pose Estimation via Deep Neural Networks 论文是谷歌发表在CVPR 2014的工作 论文地址 Abstract 我们提出了一种基于深度神经网络 (DNN) 的人体姿态估计方法。姿势估计被表述为基…

202318读书笔记|《芭蕉·芜村·一茶:俳句三圣新译300》——樱花——让一整个春夜亮起来!

202318读书笔记|《芭蕉芜村一茶:俳句三圣新译300》——樱花——让一整个春夜亮起来! 《芭蕉芜村一茶:俳句三圣新译300》诗歌,词,短歌,俳句我都喜欢,读起来轻松明快! 松尾…

【代码实验】YOLO V7利用pycocotools进行评估时的一些问题

文章目录 一、无法使用pycocotools进行评估二、使用pycocotools计算的结果与YOLO自身的mAP差异较大的原因 一、无法使用pycocotools进行评估 yolov7有自己的计算mAP方式,但是在使用pycocotools进行test时,出现了pycocotools unable to run: Results do …

Java关键词synchronized

目录 一、通过卖票系统观察多线程的安全隐患 二、synchronized的基本知识 1.使用synchronized的原因 2.synchronized的作用 3.synchronized的基本格式 a.synchronized加在方法名前 b.synchronized用在方法中 4. Java锁机制 5.synchronized注意事项 三、使用synchronize…

【可变参数列表如何可变?】

可变参数列表 本章重点 学会使用可变参数列表的使用与原理 函数传参补充知识 如果函数没有形式参数,仍然可以给函数传递参数。在c语言中,只要发生了函数调用并且传递了函数,必定形成临时变量。所谓的临时拷贝本质就是在栈帧内部形成的&#…

Tcl常用命令备忘录-基础篇

一、置换 1、变量置换 在Tcl中,$符号可以用来引用变量。变量置换可以用来将变量的值嵌入到代码中。例如: set name "Tom" puts "Hello, $name!"这个示例中,变量$name的值会在输出语句中被替换为"Tom"。 2…

腾讯云服务器镜像市场快速搭建WordPress博客网站教程

通过腾讯云服务器的镜像市场搭建WordPress网站非常简单,不需要手动配置WP所需的Web环境,一键即可安装WordPress博客,腾讯云百科使用腾讯云服务器通过镜像市场的WordPress镜像搭建WP网站教程: 目录 腾讯云服务器通过市场镜像安装…

SpringMvc拦截器和手写模拟SpringMvc工作流程源码详解

目录 1. SpringMvc简介 1.1 什么是MVC 1.2 什么是SpringMvc 1.3 SpringMvc 能干什么 1.4 SpringMvc 工作流程 2. SpringMvc拦截器和过滤器 2.1 拦截器 2.1.1 拦截器作用 2.1.2 拦截器和过滤器的区别 2.1.3 拦截器方法说明 2.1.4 多个拦截器执行顺序 2.1.5 自定义拦…