MD5加密

1、MD5

  • 过程不可逆
  • 同一个明文的输出值不变
  • 大多用在密码加密上

2、加密

1. 不加盐

  • 不加盐方式获得的密文经过撞库可破解获得明文
import hashlib


# 建立md5对象
obj = hashlib.md5()

# 给obj设置明文
obj.update("2018".encode("utf-8"))  # 括号内容须为bytes类型

# 获取到密文
mw = obj.hexdigest()

print(mw)  # 84ddfb34126fc3a48ee38d7044e87276

2. 加盐

  • 经过加盐方式获得的密文就很难破解了
import hashlib


SALT = b"abedkfjdiurwouregjogdif"

# 建立md5对象
obj = hashlib.md5(SALT)

# 给obj设置明文
obj.update("2018".encode("utf-8"))  # 括号内容须为bytes类型

# 获取到密文
mw = obj.hexdigest()

print(mw)  # a2fd1c9c7b7e697e93d9df1f6e840b8a

 

 3、应用

  • 在用户注册时,密码经过加密保存,在用户登陆时,用户输入密码后,先经过md5加密成密文,再与注册时密码密文匹配
import hashlib


SALT = b"abedkfjdiurwouregjogdif"

def encrypt(content):
    obj = hashlib.md5(SALT)
    obj.update(content.encode("utf-8"))
    return obj.hexdigest()


# 注册
username = input("username: ")
pwd = input("password: ")
pwd = encrypt(pwd)  # a2fd1c9c7b7e697e93d9df1f6e840b8a

uname = "Tom"
upwd = "a2fd1c9c7b7e697e93d9df1f6e840b8a"

# 登陆
username_info = input("username: ")
pwd_info = input("password: ")

if username_info == uname and upwd == encrypt(pwd_info):
    print("登陆成功")
else:
    print("用户名或密码错误")
相关文章
相关标签/搜索