网络安全-安全散列函数,信息摘要SHA-1,MD5原理
-----------------------------------------------欢迎查看网络安全连载博客-----------------------------------
【网络安全】-安全散列函数。信息摘要SHA-1。MD5算法 【网络安全】-非对称加密,RSA算法,数字签名
【网络安全】-RSA非对称算法算法、数字签名 【网络安全】-建立安全socket连接、登录
【网络安全】-【数字证书,证书链】
---------------------------------------------------------------------------------------------------------------------
本文绝大部分内容来自《网络安全基础——应用与标准》第五版——清华大学出版社。
当中蓝色部门是自己加入
安全散列函数
单向散列函数或者安全散列函数之所以重要,不仅在于消息认证(消息摘要。数据指纹)。还有数字签名(加强版的消息认证)和验证数据的完整性。常见的单向散列函数有MD5和SHA
散列函数的要求
散列函数的目的是文件、消息或者其它数据块产生“指纹”。为满足在消息认证中的应用,散列函数H必须具有下列性质:
(1)H可适用于随意长度的数据块。
(2)H能够生成固定长度的输出。
(2)对于随意给定的x,计算H(x)相对easy,而且能够用软/硬件实现。
(4)对于随意给定的h,找到满足H(x)=h的x在计算上不可行。满足这一特性的散列函数称之为:具备抗原像攻击性。
(5)对于随意给定的数据块x,找到满足H(y)=H(x)的y ≠ x在计算上是不可行;满足这一特性的散列函数称之为:抗弱碰撞性。
(6)找到满足H(x) = H(y)的随意一对(x,y)在计算上是不可行的。
满足这一特性的散列函数称之为:抗碰撞性。
前三个性质是使用散列函数进行消息认证的实际可行要求。第四个属性,抗原像攻击,防止攻击者能够回复秘密值。抗弱碰撞性保证了对于给定的消息。不可能找到具有同样散列值的可替换消息。
满足上面前5个性质的散列函数称之为弱散列函数。
假设还满足第6个性质则称之为强散列函数。
一般来说:能够认识散列函数的两个特点就OK,1.输出固定长度的 2. 不可逆转!
散列函数的安全性
有两种方法能够攻击安全散列函数:password分析法和暴力攻击法。
散列函数抵抗暴力攻击的强度全然依赖于算法生成的散列码长度。
Van Oorschot和Wiener以前提出,花费1000万美元涉及一个被专门用来搜索MD5算法碰撞的机器,则平均24天内就能够找到一个碰撞。
2004年8月中国password学家王小云教授等首次发布了提出一种寻找MD5碰撞的新方法。眼下利用该方法用普通微机几分钟内就可以找到MD5的碰撞。MD5已经呗彻底攻破。
简单散列函数
例如以下所看到的
Ci = bi1⊕ bi2⊕ … ⊕ bim
SHA安全散列函数
由于其它每一种被广泛应用的散列函数都已经被证实存在这password分析学中的缺陷。接着到2005年,SHA也许仅存的安全散列算法。SHA由美国国家标准与技术研究院(NIST)开发。
● 2002年,发布了SHA-2(SHA-256、SHA-384、SHA-512)
● 2008年,添加了SHA-224
如图所看到的:
● 第1步、追加填充比特
● 第2步、追加长度
● 第3步、初始化散列缓冲区
这些字的获取方式例如以下:前8个素数取平方跟,取小数部分前64位。
● 第4步、处理1024比特的数据块消息
该模块在上图中标记为F,下图是其逻辑关系。每一轮都以512比特的缓冲区值abcdefgh作为输入。而且更新缓冲区内容。
在第一轮时,缓冲区的值是中间值Hi-1.在随意t轮。使用从当前正在处理的1024比特的数据块(Mi)导出64位比特值Wt。每一轮还使用附加常数Kt。当中0<=t<=79表示80轮中的某一轮。这些常数的获取方式例如以下:前8个素数的立方根。取小数部分的前64位。这些常数提供了64位随机串集合,能够初步消除输入数据中的不论什么规则性。第80轮输出加到第1轮输入(Hi-1)生成Hi。
缓冲区里的8个字与Hi-1中对应的字进行模264加法运算。
● 第5步、输出
网络安全-安全散列函数,信息摘要SHA-1,MD5原理的更多相关文章
- 【转】java MessageDigest类的作用 :提供信息摘要 算法( MD5 或 SHA 等)的功能
一.结构和概述: java.lang.Object java.security.MessageDigestSpi java.security.MessageDigest 声明:public abstr ...
- SHA信息摘要
SHA算法是在MD4的基础上演进而来的,通过SHA算法能够获得一个固定长度的摘要信息. SHA算法系列有SHA-1(也成为SHA),SHA-224,SHA-256,SHA-384和SHA-512这 ...
- base64,AES,RSA,SHA和MD5等加密方式(jdk)
import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.crypto.Cipher; import jav ...
- PHP的Hash信息摘要扩展框架
今天我们主要学习的是 PHP 中一些 Hash 散列加密相关的扩展函数的使用,而不是 Hash 算法,这种加密其实也只是一种更复杂一些的密钥算法,与 Hash 算法类似的是,我们输入的一串字符串,就像 ...
- Java 消息摘要 散列 MD5 SHA
package xxx.common.util; import java.math.BigInteger; import java.security.MessageDigest; import jav ...
- 信息加密之信息摘要加密MD2、MD4、MD5
对于用户数据的保密一直是各个互联网企业头疼的事,那如何防止用户的个人信息泄露呢?今天为大家介绍一种最简单的加密方式--信息摘要算法MD.它如何来保护用户的个人信息呢?其实很简单,当获得到用户的信息后, ...
- MAC信息摘要
MAC(Message Authentication Code ,消息认证码算法)是含有密钥散列函数算法,兼容MD和SHA算法的特性,并在此基础上加入了密钥.因此,MAC也称为HMAC. ...
- 数据摘要算法的测试效率(SHA、MD5和CRC32)
1.算法概述 数据摘要算法是密码学算法中非常重要的一个分支,它通过对所有数据提取指纹信息以实现数据签名.数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密.数据摘要算法也被称为哈希(H ...
- SHA和MD5的Salt
常用的对称加密算法有:DES.3DES.RC2.RC4.AES 常用的非对称加密算法有:RSA.DSA.ECC 使用单向散列函数的加密算法(摘要算法):MD5.SHA 那么什么是salt?生成一个随机 ...
随机推荐
- 洛谷 P1615 西游记公司
题目背景 一道极其无厘头的题目 题目描述 事情是这样的:西游记中的孙沙猪(孙杀猪)三徒弟在西天取经之后开始进入厦门大学经贸系学习经济,在1个小时的学习后,他们用暴力手段毕业了.然后,他们创办了三个公司 ...
- PHP流程控制考察点
php遍历数组的三种方法及各自的区别 php遍历数组的方式主要有三种: for循环 foreach循环 while.list().each()组合循环 其中: for循环只能遍历索引数组,foreac ...
- SpringMVC 控制器统一异常处理
摘要介绍spring mvc控制器中统一处理异常的两种方式:HandlerExceptionResolver以及@ExceptionHandler:以及使用@ControllerAdvice将@Exc ...
- iView webapp / Mint UI / MUI [前端UI]
前端UI iView webapp一套高质量的 微信小程序 UI 组件库 https://weapp.iviewui.com/?from=iview Mint UI 基于 Vue.js 的移动端组件库 ...
- viewer && ImageFlow 图片滚动组件 图片点击放大 可以滚轮放大缩小 viewer
ImageFlow https://finnrudolph.com/products/imageflow https://github.com/countzero/ImageFlow http://w ...
- DEBUG无法进入断点解决方法
18/08/17 任务栏:Tools->Options->Debugging->General->Require source files to exactly match t ...
- PHP 下基于 php-amqp 扩展的 RabbitMQ 简单用例 (二) -- Topic Exchange 和 Fanout Exchange
Topic Exchange 此模式下交换机,在推送消息时, 会根据消息的主题词和队列的主题词决定将消息推送到哪个队列. 交换机只会为 Queue 分发符合其指定的主题的消息. 向交换机发送消息时,消 ...
- eclipse修改xml文件默认的打开方式为XML Editor
1.菜单:Window -> Preferences -> General -> Editors -> File Associations ...
- mysql通配符进行模糊查询
在mysql数据库中,当我们需要模糊查询的时候 ,我们会使用到通配符. 首先我们来了解一下2个概念,一个是操作符,一个是通配符. 操作符 like就是SQL语句中的操作符,它的作用是指示在SQL语句后 ...
- 树莓派 -- 按键 (key)使用BCM2835 gpio library
BCM2835 GPIO library介绍 This is a C library for Raspberry Pi (RPi). It provides access to GPIO and ot ...