MD5算法

md5,算法 · 浏览次数 : 22

小编点评

**MD5算法简介** MD5(Message Digest 5)是一种常用的摘要算法,用于对数据进行散列和加密。它是一种函数,将任意长度的数据转换成一个固定长度的字符串。MD5算法是一种不可逆的算法,这意味着无法从一个字符串中恢复原始数据。 ** MD5 的工作原理** MD5算法使用一个称为“哈希函数”的函数来计算数据散列值。哈希函数是一种数学函数,它将任何长度的数据映射到一个固定长度的字符串。MD5 哈希函数使用以下步骤来计算散列值: 1. 将数据分为2进制的字节序列。 2. 对每个字节序列进行循环运算。 3. 对每个循环中,计算当前字节的哈希值。 4. 将所有哈希值进行加权求和。 5. 返回散列值。 ** MD5 的优点** * MD5 是一种安全的算法,它非常难以被攻击。 * MD5 的散列值长度固定,使其易于存储和传输。 * MD5 可以用于多种应用,例如验证数据完整性和计算相似性。 ** MD5 的缺点** * MD5 算法不可逆,这意味着无法从一个散列值中恢复原始数据。 * MD5 的散列值长度固定,这可能限制其用于的范围。 * MD5 算法在某些情况下可能导致性能问题。 ** MD5 的应用** MD5 是一种非常常见的密码摘要算法,被许多网站和应用程序使用。它用于存储敏感数据,例如用户名、密码和订单号。由于 MD5 算法不可逆,因此无法从这些数据中恢复原始数据。 ** 如何避免 MD5 撞库** * 使用盐作为 MD5 哈希函数的输入。 * 确保数据按顺序传输。 * 使用加密传输协议,例如 HTTPS。

正文

# MD5算法

在我们进行js逆向的时候. 总会遇见一些我们人类无法直接能理解的东西出现. 此时你看到的大多数是被加密过的密文.

MD5是一个非常常见的摘要(hash)逻辑. 其特点就是小巧. 速度快. 极难被破解. 所以, md5依然是国内非常多的互联网公司选择的密码摘要算法.

1. 这玩意不可逆. 所以. 摘要算法就不是一个加密逻辑. 
2. 相同的内容计算出来的摘要应该是一样的
3. 不同的内容(哪怕是一丢丢丢丢丢不一样) 计算出来的结果差别非常大

在数学上. 摘要其实计算逻辑就是hash.
hash(数据) => 数字

1. 密码
2. 一致性检测

md5的python实现:

from hashlib import md5

obj = md5()
obj.update("alex".encode("utf-8"))
# obj.update("wusir".encode('utf-8'))  # 可以添加多个被加密的内容

bs = obj.hexdigest()
print(bs)

image
我们把密文丢到网页里. 发现有些网站可以直接解密. 但其实不然. 这里并不是直接解密MD5. 而是"撞库".
就是它网站里存储了大量的MD5的值. 就像这样:
image

而需要进行查询的时候. 只需要一条select语句就可以查询到了. 这就是传说中的撞库.
如何避免撞库: md5在进行计算的时候可以加盐. 加盐之后. 就很难撞库了.

from hashlib import md5

salt = "我是盐.把我加进去就没人能破解了"
obj = md5(salt.encode("utf-8"))  # 加盐
obj.update("alex".encode("utf-8"))
bs = obj.hexdigest()
print(bs)

image

扩展; sha256

from hashlib import sha1, sha256
sha = sha256(b'salt')
sha.update(b'alex')
print(sha.hexdigest())

不论是sha1, sha256, md5都属于摘要算法. 都是在计算hash值. 只是散列的程度不同而已. 这种算法有一个特性. 他们是散列. 不是加密. 而且, 由于hash算法是不可逆的, 所以不存在解密的逻辑.

与MD5算法相似的内容:

MD5算法

# MD5算法 在我们进行js逆向的时候. 总会遇见一些我们人类无法直接能理解的东西出现. 此时你看到的大多数是被加密过的密文. MD5是一个非常常见的摘要(hash)逻辑. 其特点就是小巧. 速度快. 极难被破解. 所以, md5依然是国内非常多的互联网公司选择的密码摘要算法. 1. 这玩意不可逆

[转帖]JS常见加密 AES、DES、RSA、MD5、SHAI、HMAC、Base64 - Python/JS实现

https://bbs.huaweicloud.com/blogs/386139 【摘要】 本文仅仅介绍了常见的一些JS加密,并记录了JS和Python的实现方式 常见的加密算法基本分为这几类: (1)base64编码伪加密 (2)线性散列算法(签名算法)MD5 (3)安全哈希算法 SHAI (4)

深入理解MD5:Message Digest Algorithm 5

title: 深入理解MD5:Message Digest Algorithm 5 date: 2024/4/21 18:10:18 updated: 2024/4/21 18:10:18 tags: MD5 哈希函数 密码学 数据完整性 碰撞攻击 安全性 替代算法 导论 MD5的背景和历史 MD5

[转帖]常见加密算法比较

加密算法 常见的 对称加密 算法主要有 DES(数据加密标准)、3DES(三重DES)、AES(高级加密标准) 和Blowfish(河豚鱼)等,常见的 非对称算法 主要有 RSA、DSA 等,散列算法 主要有 SHA-1、SHA-256、MD5 等。 HASH算法(散列算法) 目前常用的是SHA-2

编码与加密(对称加密与非对称加密)

目录编码与加密Base64编码(可逆)十六进制编码(hex.EncodeToString函数)(可逆)哈希算法(不可逆)MD5(不可逆)SHA-256(不可逆)MAC算法(不可逆)加密算法(可逆)对称加密算法(可逆)DES(可逆)AES(可逆)区别非对称加密算法(可逆)RSA(可逆)ECC(可逆)P

如何实现sm3加密

SM3加密应用 何为sm3加密? SM3是由中国国家密码管理局设计的一种密码杂凑函数,类似于SHA-256和MD5等国际标准的散列算法。SM3算法是中国国家标准《GB/T 32905-2016 信息安全技术 SM3密码杂凑算法》的一部分,用于数字签名和数据完整性验证等领域。 SM3算法的特点 输出长

MD5 简介 以及 C# 和 js 实现【加密知多少系列_1】

本文首先简单介绍了 MD5 的特点,然后再通过两种实现进行了实践,提供的实现代码均已经过验证。

C#.NET与JAVA互通之MD5哈希V2024

C#.NET与JAVA互通之MD5哈希V2024 配套视频: 要点: 1.计算MD5时,SDK自带的计算哈希(ComputeHash)方法,输入输出参数都是byte数组。就涉及到字符串转byte数组转换时,编码选择的问题。 2.输入参数,字符串转byte数组时,编码双方要统一,一般为:UTF-8。

[转帖]pg_hba.conf 中 md5 和 scram-sha-256 的区别

db: postgresql 11 auth-method 指定当一个连接匹配这个记录时,要使用的认证方法。下面对可能的选择做了概述,详见第 20.3 节。 trust 无条件地允许连接。这种方法允许任何可以与PostgreSQL数据库服务器连接的用户以他们期望的任意PostgreSQL数据库用户身

[转帖]瀚高数据库 SM3和MD5密码验证配置

我们都知道,瀚高数据库安全版v4.5和企业版v6都支持国密sm3。一般我们在initdb的时候,会通过选项“-A sm3”来指定,这样的效果是创建用户或修改密码时,默认就会使用sm3取密码的散列值。我们也可以在后期添将密码动态改为md5。 例如,我们当前默认是md5,现在要添加一个用户,使用sm3,