pyhthon常用模块hashlib

python hashlib模块

一,hashlib模块主要用于加密,其中提供sha1,sha224,sha256,sha384,sha512,md5算法。常用的使用md5即可完成需求。

一,使用md5普通加密

import hashlib

m = hashlib.md5()


m.update(b'cnblog.com')

print(m.hexdigest())

  

 

二,2次加密,其实就是将第一次的要加密的字符串和第二次要加密的字符串拼接起来做一次加密

import hashlib

m2 = hashlib.md5('www.'.encode('utf-8'))

m2.update('cnblogs.com'.encode('utf-8'))

print(m2.hexdigest())

  

或者

import hashlib

m3 = hashlib.md5()

m3.update('www.'.encode('utf-8'))

m3.update('cnblogs.com'.encode('utf-8'))


print(m3.hexdigest())

  

或者直接将2次加密的字符串直接拼接

import hashlib

m4 = hashlib.md5()

m4.update('www.cnblogs.com'.encode('utf-8'))

print(m4.hexdigest())

  

 

三,使用其他加密算法,和md5类似,比如sha512

import hashlib

m5 = hashlib.sha512()

m5.update(b'www')

print(m5.hexdigest())

  

 

小例子:

import hashlib

import sys


class UserInfo(object):
    def __init__(self):
        print(
            """
            1,注册
            2,登陆
            3,退出
            
            """
        )
    #此方法用于加密用户的密码
    def md5(self,password):
        md5_pwd = hashlib.md5()
        # md5_pwd.update(bytes(password,encoding='utf-8'))
        md5_pwd.update(password.encode('utf-8'))

        return md5_pwd.hexdigest()


    #此方法用于后面注册和登陆公共输入接口
    def input(self):
        username = input('请输入账号:')
        password = input('请输入密码:')
        return (username,password)

    #注册方法
    def register(self):
        username,password= self.input()
        with open('userinfo.txt','r') as f:
            while True:
                line = f.readline()
                if line:
                    if username == line.split()[0]:
                        print('user alreay register')
                        break
                else:
                    password = self.md5(password)
                    with open('userinfo.txt','a') as f:
                        f.write('{0}\t{1}\n'.format(username,password))
                        print('rgister sucessful,Please login ')
                        break

    #登陆方法
    def login(self):
        username,password= self.input()
        with open('userinfo.txt','r') as f:
            for line in f:
                    if line.split()[0] == username and line.split()[1] == self.md5(password):
                            print('login sucessful!')
                            break
                    elif line.split()[0] == username and line.split()[1] != self.md5(password):
                        print('passwd error!')
                        break
            else:
                    print('user not register!!!')
                    print('login fail!!!')



#主程序
def main():
    while True:
        user = UserInfo()
        n = int(input('please input number:>>>'))
        if n == 1:
            user.register()
        elif n == 2:
            user.login()
        else:
            sys.exit(0)



if __name__ == '__main__':
    main()

  

posted @ 2018-04-27 10:36  某电商首席日志工程师  阅读(161)  评论(0编辑  收藏  举报