【python】md5加密

接口框架中,完成一些keyWordFunction,方便调用

使用Python内置哈希库对字符串进行MD5加密

导入MD5加密所需模块

import hashlib  

创建md5对象

m = hashlib.md5() 

传入需要加密的字符串进行MD5加密

m.update("str4MD5Encode") 

获取到经过MD5加密的字符串

encodeStr = m.hexdigest()
print encodeStr 

输出

Traceback (most recent call last):
  File "E:/gitlab/SWQA_API/keyWordFun/encrypt.py", line 11, in <module>
    m.update("str4MD5Encode")
TypeError: Unicode-objects must be encoded before hashing

可以将加密的字符串转为byte类型

import hashlib
m = hashlib.md5()
m.update(b"str4MD5Encode")
encodeStr = m.hexdigest()
logger.info(encodeStr)

输出

f8fd73cf519e6f11513d505b9dd33541

但是对于中文字符串的md5怎么办?

中文字符在python中是以unicode存在的,同一个字符串在不同的编码体系下有不同的值,所以在hash前需要进行编码

使用utf8 编码后再进行加密

import hashlib
m=hashlib.md5()
strs = "str4MD5Encode"
m.update(strs.encode("utf8"))
print(m.hexdigest())
logger.info(m.hexdigest())

输出

f8fd73cf519e6f11513d505b9dd33541

同样,使用gb2312 编码后加密同样可以输出相同的字符串

import hashlib
m=hashlib.md5()
strs = "str4MD5Encode"
m.update(strs.encode("gb2312"))
print(m.hexdigest())
logger.info(m.hexdigest())

输出

f8fd73cf519e6f11513d505b9dd33541

但是加密中文字符串时,是不一样的

使用utf8 加密 中文字符串 ”我们“,输出

ab4a85fc2ec4cf830e0f84aaacefcb1c

使用gb2312 加密 中文字符串 ”我们“,输出

7f6e13b138a58ac597d6d83a29e80d66

加密后的结果是不一样的,但是使用网上在线md5加密中文字符串”我们“,得到加密的字符串为:

ab4a85fc2ec4cf830e0f84aaacefcb1c

utf8 编码后md5加密的字符串是一致的,尝试了几个中文字符串都是如此

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sysu_lluozh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值