zoukankan      html  css  js  c++  java
  • 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}	{1}
    '.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()
    

      

  • 相关阅读:
    在SSM框架中,multfile转file
    mysql 存储过程简单实例
    mysql 对比两个表的一致性
    Lucene 排序 Sort与SortField
    Lucene5.x 中文 同义词
    Lucene分页-----SearcherAfter
    Lucene的Query类介绍
    二叉树实例学习(四)——获取节点的高度函数getHight()
    二叉树实例学习(三)——插入左右节点函数测试
    二叉树实例学习(二)
  • 原文地址:https://www.cnblogs.com/lin1/p/8961206.html
Copyright © 2011-2022 走看看