Hash相关基础及衍射内容知识(包含:计算校验值,SHA相关内容,加密方式对比,HASH应用)

HASH(哈希)值
hash(散列、杂凑)函数,是将任意长度的数据映射到有限长度的域上。直观解释起来,就是对一串数据m进行杂糅,输出另一段固定长度的数据h,作为这段数据的特征(指纹)。

散列表
散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存储存位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表中一个位置来访问记录,这加快了查找速度。这个映射函数称做散列函数,存放记录的数组称做散列表。

注意;Hash值映射可以是任意短的字符,映射到一个固定长度的数据中,即产生的HASH值可能比原文件占用更大。

Hash映射原理:将m分成固定长度(如128位),依次进行hash运算,然后用不同的方法迭代即可(如前一块的hash值与后一块的hash值进行异或)。如果不够128位怎么办?用0补全或者用1补全随意,算法中约定好就可以了。

  • 2.Hash特征

防碰撞能力:类似于显示中的防撞衫能力,能使每个文件都有特定的hash值(衬衫),不会因为通过使用这个hash函数(设计师)后,让两个文件(人)有相同的hash值(装扮)

抗篡改能力:牵一发动全身,而非拔一根头发就完全看不出来效果对于一个数据块,哪怕只改动其一个比特位,其hash值的改动也会非常大。

  • 3.Linux 使用命令行计算校验值

使用方法十分简单,输入所需的加密方法+sum,然后输入文件名即可

  • 4.Win10中检测任意一个文件的HASH值

4.1使用系统自带的PowerShell进行检测

可以通过Win+Q搜索界面搜索PowerShell

命令格式:
Get-Filehash -Path"…" -Algorithm “…”

Get-Filehash -Path “D:\UnrealEngine-4.7.0-release\GenerateProjectFiles.bat” -Algorithm SHA1
其中两个引号中的…分别代表文件路径以及使用的hash算法

在这里插入图片描述
可以看到三种加密方式对应的长度都不相同

4.2使用Windows自带的certutil命令来计算一个文件的校验值:

Certutil.exe is a command-line program that is installed as part of Certificate Services. You can use Certutil.exe to dump and display certification authority (CA) configuration information, configure Certificate Services, backup and restore CA components, and verify certificates, key pairs, and certificate chains.

Certutil命令类似于Get-Filehash,支持的算法有:MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512。也就是基本都支持

4.3直接使用工具hash1.04

官网:http://programmersought.com/article/163534552/;jsessionid=31A1BB4DF403646D0B3AAF7F1F79C148

4.4使用在线计算

如:https://1024tools.com/hash

  • 5.SHA相关内容及SHA1实现原理

在这里插入图片描述
SHA-1算法是以512一包来处理消息的,如果消息长度并不是512的整数倍,就需要对原始消息进行填充。

RFC3174 中的第六部分,给出了算法具体实现方法 。
经过前面的准备,接下来就是计算信息摘要了。SHA1有4轮运算,每一轮包括20个步骤,一共80步,最终产生160位的信息摘要,这160位的摘要存放在5个32位的链接变量中。
在SHA1的4论运算中,虽然进行的就具体操作函数不同,但逻辑过程却是一致的。首先,定义5个变量,假设为H0、H1、H2、H3、H4,对其分别进行如下操作:
(A)将A左移5为与 函数的结果求和,再与对应的子明文分组、E以及计算常数求和后的结果赋予H0。
(B)将A的值赋予H1。
(C)将B左移30位,并赋予H2。
(D)将C的值赋予H3。
(E)将D的值赋予H4。
(F)最后将H0、H1、H2、H3、H4的值分别赋予A、B、C、D
————————————————
具体代码实现参考原文。https://blog.csdn.net/ZCShouCSDN/article/details/84675235

备注:参考上图的每个SHA类别的计算步骤和消息摘要长度,即数据处理的长度和输出结果

  • 6.加密方式对比:SHA1,SHA256(SHA2),MD5

SHA-224、SHA-256、SHA-384和SHA-512算法(统称为SHA-2)
MD5输出128bit、SHA1输出160bit、SHA256输出256bit

SHA(Secure Hash Algorithm)并非一个算法,而是一个Hash函数族。NIST(National Institute of Standards andTechnology)于1993年发布其首个实现。目前知名的SHA-1算法在1995年面世,它的输出为长度160位的Hash值,抗穷举性更好。SHA-1设计时模仿了MD4算法,采用了类似原理。SHA-1已被证明不具备“强抗碰撞性”。

目前,MD5和SHA1已经被破解,一般推荐至少使用SHA2-256或更安全的算法。

SHA-1是160位的哈希值,而SHA-2是组合值,有不同的位数,其中最受欢迎的是256位。

因为SHA-2有多种不同的位数,导致这个名词有一些混乱。但是无论是“SHA-2”,“SHA-256”或“SHA-256位”,其实都是指同一种加密算法。但是SHA-224,“SHA-384”或“SHA-512”,表示SHA-2的二进制长度。还要另一种就是会把算法和二进制长度都写上,如“SHA-2 384”。

SSL行业选择SHA作为数字签名的散列算法,从2011到2015,一直以SHA-1位主导算法。但随着互联网技术的提升,SHA-1的缺点越来越突显。从去年起,SHA-2成为了新的标准,所以现在签发的SSL证书,必须使用该算法签名。

也许有人偶尔会看到SHA-2 384位的证书,很少会看到224位,因为224位不允许用于公共信任的证书,512位,不被软件支持。
初步预计,SHA-2的使用年限为五年,但也许会被提前淘汰。这需要时间来验证。

具体对比实现方法:
https://blog.csdn.net/WuLex/article/details/81477097

  • 7 优秀HASH算法

正向快速:给定明文和Hash算法,在有限时间和有限资源内能计算得到Hash值;

逆向困难:给定(若干)Hash值,在有限时间内很难(基本不可能)逆推出明文;

输入敏感:原始输入信息发生任何改变,新产生的Hash值都应该出现很大不同;

冲突避免:很难找到两段内容不同的明文,使得它们的Hash值一致(发生碰撞)。

冲突避免有时候又称为“抗碰撞性”,分为“弱抗碰撞性”和“强抗碰撞性”。如果给定明文前提下,无法找到与之碰撞的其他明文,则算法具有“弱抗碰撞性”;如果无法找到任意两个发生Hash碰撞的明文,则称算法具有“强抗碰撞性”。

  • 8.HASH的应用

在密码学中,hash算法的作用主要是用于消息摘要和签名,换句话说,它主要用于对整个消息的完整性进行校验。举个例子,我们登陆知乎的时候都需要输入密码,那么知乎如果明文保存这个密码,那么黑客就很容易窃取大家的密码来登陆,特别不安全。那么知乎就想到了一个方法,使用hash算法生成一个密码的签名,知乎后台只保存这个签名值。由于hash算法是不可逆的,那么黑客即便得到这个签名,也丝毫没有用处;而如果你在网站登陆界面上输入你的密码,那么知乎后台就会重新计算一下这个hash值,与网站中储存的原hash值进行比对,如果相同,证明你拥有这个账户的密码,那么就会允许你登陆。银行也是如此,银行是万万不敢保存用户密码的原文的,只会保存密码的hash值而而已。

参考及引用:
加密算法比较:SHA1,SHA256,MD5
https://blog.csdn.net/WuLex/article/details/81477097
【密码故事010】科普向:Hash算法与数字摘要
https://zhuanlan.zhihu.com/p/37012529
hash 碰撞? 抗碰撞能力、抗篡改能力
https://blog.csdn.net/u011500419/article/details/87617035
常用算法 之三 详解 SHA1 实现(基于算法的官方原文档)及源码详细注释:
https://blog.csdn.net/ZCShouCSDN/article/details/84675235

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值