hashlib

hashlib 包含众多加密方法,包括:
md5,SHA1 ,SHA224,SHA256,SHA284等。
md5为不可逆加密算法,无法被反解,但是可用通过撞库解决。

import hashlib

t = hashlib.md5()
t.update(bytes("RootAdmin",encoding="utf-8"))
print(t.hexdigest())

t.update 中可以写密码和字符编码,但这种方法可用通过撞库解决
在md5加密过程中,添加自己的专属字符串,可用达到无法解密的作用。

from hashlib import md5

hash = md5(bytes("ad;'sadf'as'", encoding="utf8"))
hash.update(bytes("123456", encoding="utf8"))
print(hash.hexdigest())

在md5(bytes(“ad;…..”))中,使用了自己的字符串,加密,保证了加密后的字符串不被撞库破解。
通过Md5实现一个加密的登录注册程序:

**init.py**
try:
    import cPickle as pickle
except ImportError:
    import pickle

def init():
    users = {}
    with open("DB", "wb") as f:
        f.write(pickle.dumps(users))

**main.py**

import hashlib
import pickle


def md5(arg):
    t = hashlib.md5(bytes("ad;ddafd;as;", encoding="utf-8"))
    t.update(bytes("arg", encoding="utf-8"))
    return t.hexdigest()


def login(arg1, arg2):
    with open("db", "rb") as f:
        users = pickle.loads(f.read())
        print(users)
        if users[arg1] == md5(arg2):
            print("login success")
        else:
            print("login fail")


def register(arg1, arg2):
    global users
    with open("DB", "rb+") as f:
        users = pickle.loads(f.read())
        users[arg1] = md5(arg2)
        print(users)
    with open("DB", "wb") as f:
        f.write(pickle.dumps(users))



t = input("please input 1 to choose register,2 to login")
if t == "1":
    username = input("Please input your username:")
    password = input("Please input your password:")
    register(username,password)
elif t == "2":
    username = input("Please input your username:")
    password = input("Please input your password:")
    login(username,password)

**checkout.py**
try:
    import cPickle as pickle
except ImportError:
    import pickle


def check():
    with open("DB", "rb") as f:
        users = pickle.loads(f.read())
        print(users)


check()


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值