Python - MD5 加密 - 进阶之路 - Day06

MD5消息摘要算法:(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。MD5是最常见的摘要算法,速度很快,生成结果是固定的128 bit字节,通常用一个32位的16进制字符串表示。

Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等。

摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。

在python3的标准库中,已经移除了md5模块,而关于hash加密算法都放在hashlib这个标准库中,如SHA1、SHA224、SHA256、SHA384、SHA512和MD5算法等。

【md5一旦加密,数据就不能返回成原来的值了,是不可以解密的】

【对于同一个字符串稍微做一点修改,加密后的哈希值变化是很大的】


示例代码一:

import hashlib
 
# 待加密信息
str = 'this is a md5 Test.'
 
# 创建md5对象
hl = hashlib.md5()
 
# Tips
# 此处必须声明encode,md5 加密的时候传入的字符串需要变成 byte 类型的
# 若写法为hl.update(str) 报错为: Unicode-objects must be encoded before hashing
hl.update(str.encode(encoding='utf-8'))
 
print('MD5加密前为 :' + str)
print('MD5加密后为 :' + hl.hexdigest())

运行结果:

MD5加密前为 :this is a md5 Test.
MD5加密后为 :d3e616f6b5be276111f227c80b4ec516

示例代码二:

import hashlib
 
str = 'this is a md5 Test.'
str_md5 = hashlib.md5(str.encode(encoding='utf-8')).hexdigest()
print(str_md5)

运行结果:

d3e616f6b5be276111f227c80b4ec516

示例代码三:

import hashlib
 
def computeMD5(message):
    m = hashlib.md5()
    m.update(message.encode(encoding='utf-8'))
    return m.hexdigest()
 
str = 'this is a md5 Test.'
print(computeMD5(str))

运行结果:

d3e616f6b5be276111f227c80b4ec516

一般写法

import hashlib
 
data = 'hoahaoxuexi,tiantianxiangshang!'
 
#  创建hash对象
md5 = hashlib.md5()
 
#  向hash对象中添加需要做hash运算的字符串
md5.update(data.encode())   #  这个地方传的是bytes类型的数据,否则会报错
 
#  获取字符串的hash值
result = md5.hexdigest()
print(result)

运行结果:

829e75a8f77b2eaae974a9f38ca44dc6

加盐

import hashlib

# 加盐
# salt 即是在加密时需要添加的字符串

def md5(string, salt=""):
    new = str(string) + str(salt)
    m1 = hashlib.md5(new.encode())
    return m1.hexdigest()


print(md5("89", salt="@##$%%^^"))

运行结果:

e3fe67473a19a3a910579a88099a3f0d

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值