• Python9-hashilib模块-day28(大年初三)


    __getitem__\__setitem__\__delitem__

    class Foo:
        def __init__(self,name,age,sex):
            self.name = name
            self.age = age
            self.sex = sex
        def __getitem__(self, item):
            if hasattr(self,item):
                return self.__dict__[item]
        def __setitem__(self,key,value):
            self.__dict__[key] = value
        def __delitem__(self, key):
            del self.__dict__[key]
    
    f = Foo('egon',38,'')
    print(f['name'])
    f['hobby'] = ''
    print(f.hobby,f['hobby'])
    print(f.__dict__)
    del f['hobby']
    print(f.__dict__)
    # __new__
    class A:
        def __init__(self):
            self.x = 1
            print('in init function')
        def __new__(cls, *args, **kwargs):
            print('in new function')
            return object.__new__(A, *args, **kwargs)
    
    a = A()
    print(a.x)
    
    
    in new function
    in init function
    1
    # __eq__
    class A:
        def __init__(self,name):
            self.name = name
        def __eq__(self, other):
            if self.name == other.name:
                return True
            else:
                return False
    obj1= A('egg')
    obj2 = A('egg')
    print(obj1 == obj2)
    # __hash__
    class A:
    def __init__(self,name,sex):
    self.name = name
    self.sex = sex
    def __hash__(self):
    return hash(self.name+self.sex)
    a = A('egon','男')
    b = A('egon','男')
    print(hash(a))
    print(hash(b))

     hashlib模块

    import hashlib   #提供摘要算法的模块
    md5 = hashlib.md5()
    md5.update(b'tim')
    print(md5.hexdigest())
    # 不管算法多么不通,摘要的功能始终不变
    # 对于相同的字符串进行使用同一个算法进行摘要,得到的值总是不变的
    # 如果使用不通算法对相同的字符串进行摘要得到的值应该不同
    # 不管使用什么算法,使用hashlib的方式永远不变
    import hashlib   #提供摘要算法的模块
    sha = hashlib.sha1()
    sha.update(b'tim')
    print(sha.hexdigest())
    # sha 算法随着算法复杂度的增加,我摘要的时间成本和空间成本都会增加
    # 基于摘要算法
    # 密码的密文存储
    # 文件的一致性验证
    # 在下载的时候,检查我们下载的文件和远程服务器上的文件是否一致
    # 两台机器上的两个文件,想检查这两个文件是否相等
    import hashlib   #提供摘要算法的模块
    usr = input('username: ')
    pwd = input('password: ')
    with open('userinfo') as f:
        for line in f:
            user,passwd,role = line.split('|')
            md5 =hashlib.md5()
            md5.update(bytes(pwd,encoding='utf-8'))
            md5_pwd = md5.hexdigest()
            if usr == usr and md5_pwd == passwd:
                print('sucess login in')
    # 加盐
    import hashlib   #提供摘要算法的模块
    md5 = hashlib.md5(bytes('salt',encoding='utf-8'))
    md5.update(b'tim')
    print(md5.hexdigest())
    # 动态加盐
    # 用户名的一部分或者直接使用用户名作为盐
  • 相关阅读:
    叶树:任总喊你回家吃饭 (zz)
    一个小员工如何让一家大银行一夕倒闭(附几则)
    精妙SQL语句收集
    降温了 降温了
    東京タワー初めてphoto
    圣诞气氛photo
    初冬071110photo
    超级郁闷的一天
    eveningplan
    KOF怀念ING
  • 原文地址:https://www.cnblogs.com/zhangtengccie/p/10355597.html
Copyright © 2020-2023  润新知