MD5加密

2018-11-12 06:51:59来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

一、MD5

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

二、加密

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

 

 三、应用

  • 在用户注册时,密码通过加密保存,在用户登录时,用户输入密码后,先通过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("用户名或密码错误")

 

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:我的机器学习之路--anaconda环境搭载

下一篇:反射