Win10,  持续记录

加密中的MD5、CRC、HASH相关知识及使用

本文于2021年1月30日由AlvinCR更新

文章导引

更新中….

一:MD5

1 基础知识

1.1 定义

MD5消息摘要算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。

在我打开的实例中给出的是32字节的十六位制数字。

1.2 作用

MD5是一种加密方法,通过MD5可以对密码进行加密,也可以通过给出的这个密码与自己计算出的密码相对比,可以判断出文件是否损坏或是被篡改。

同一个文件md5码恒定不变,只要不更改文件内部数据,即使更改外部信息,md5码也会保持不变。即便是更改内部一个数字,MD5码也会完全的不同,即使文件名一样,md5码也不一样。

1.3 存在的问题

1996年后被证实存在弱点,可以被加以破解,对于需要高度安全性的资料,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞攻击,因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。

2 生成MD5

2.1 较短密码

在线网站:https://www.cmd5.com/

正如上面所说的MD5被验证无法防止碰撞攻击,这样有希望对MD5码进行破解,如果是采用加密性更强的方法,也许100年后的计算机才能够破解今天的密码。此外这里的破解方法是指对较短的密码进行碰撞破解,如果是像我上图中几十G的文件进行破解,简直是天方夜谭。

2.2 文件MD5码

基本不可能将文件的MD5码还原出原本的文件,但是通过原本文件生成MD5码还是很容易的,例如使用:MD5 checksum 生成工具

Win10命令提示符中使用CertUtil -hashfile也能够生成包括MD5等多种算法的校验码。

加密算法代码:https://www.jianshu.com/p/785e7725d612

二:散列Hash

散列这个概念在计算机任何一个课本中都不会缺少他的身影,散列算法可以用来加密存在数据库中的字符串,而且由于散列算法所计算出来的散列值无法逆推原本的数值,因此可有效的保护密码。

AlvinCR一般将散列看做成一个映射,通过将原有的文件按照特定的算法映射成一个新的数列,从而实现加密、映射、索引的效果。

哈希函数(Hash function)是一种从任何类型的数据中创建小型数字”指纹”的方法。哈希函数将消息或数据压缩为摘要,从而使数据量更小,数据格式固定。该函数混合数据并重新创建一个名为散列值的指纹(哈希值、哈希码、哈希和或散列)。散列值通常由短随机字母和数字组成的字符串表示。好的哈希函数在输入字段中很少有哈希冲突。在哈希表和数据处理中,如果不抑制冲突以区分数据,则更难以找到数据库记录。

精心设计的加密哈希函数是一种”单向”操作:对于给定的哈希值,没有实用的方法计算原始输入,也就是说,很难伪造。为加密哈希列表而设计的函数,如sha-2,广泛用于验证散列函数。这样,当软件下载时,将根据验证代码下载正确的文件部分。此代码不会因环境因素的变化而改变,例如机器配置或ip地址。以确保源文件的安全性。

三:MD5、SHA1、CRC32

SHA-1基于MD5

CRC的全称为CyclicRedundancyCheck,中文名称为循环冗余校验

常见的散列算法

原文https://zh.wikipedia.org/wiki/%E6%95%A3%E5%88%97%E5%87%BD%E6%95%B8

算法名称 输出大小(bits) 内部大小 区块大小 长度大小 字符尺寸 碰撞情形
HAVAL 256/224/192/160/128 256 1024 64 32
MD2 128 384 128 No 8 大多数
MD4 128 128 512 64 32
MD5 128 128 512 64 32
PANAMA 256 8736 256 32
RadioGatún 任意长度 58字 3字 1-64
RIPEMD 128 128 512 64 32
RIPEMD-128/256 128/256 128/256 512 64 32
RIPEMD-160/320 160/320 160/320 512 64 32
SHA-0 160 160 512 64 32
SHA-1 160 160 512 64 32 有缺陷
SHA-256/224 256/224 256 512 64 32
SHA-512/384 512/384 512 1024 128 64
Tiger(2)-192/160/128 192/160/128 192 512 64 64
WHIRLPOOL 512 512 512 256 8

留言

您的电子邮箱地址不会被公开。 必填项已用 * 标注

加密中的MD5、CRC、HASH相关知识及使用