Python3中MD5加密代码详解

代码详解

# -*- coding:utf-8 -*-
import hashlib

# 第一次创建md5实例对象,会加载一些这个类的一些初始方法和信息,
# 如果加密一个字符串后不进行md5实例初始化,再继续加密另一个字符串时,
# md5会带一些刚开始的一些初始化信息对第二个字符串就行加密,
# 和重新初始化md5后再进行加密的结果是不一样的
# 所以,每次做md5加密的时候都需要重新创建一个md5的实例对象,否则可能得不到准确的加密信息


def md5_encrypt(text):
    m5 = hashlib.md5()
    text = text.encode(encoding='utf-8')
    m5.update(text)
    value = m5.hexdigest()
    return value

print(md5_encrypt("hello"))

结果:

5d41402abc4b2a76b9719d911017c592

知识延伸


# 由于MD5模块在python3中被移除
# 在python3中使用hashlib模块进行md5操作

import hashlib

# 待加密信息
str = 'this is a md5 test.'

# 创建md5对象
m = hashlib.md5()

# Tips
# 此处必须encode
# 若写法为m.update(str)  报错为: Unicode-objects must be encoded before hashing
# 因为python3里默认的str是unicode
# 或者 b = bytes(str, encoding='utf-8'),作用相同,都是encode为bytes
b = str.encode(encoding='utf-8')
m.update(b)
str_md5 = m.hexdigest()

print('MD5加密前为 :' + str)
print('MD5加密后为 :' + str_md5)

# 另一种写法:b‘’前缀代表的就是bytes
str_md5 = hashlib.md5(b'this is a md5 test.').hexdigest()
print('MD5加密后为 :' + str_md5)
'''
 

猜你喜欢

转载自blog.csdn.net/chang_jinling/article/details/89951814
今日推荐