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())
# 动态加盐
# 用户名的一部分或者直接使用用户名作为盐
原文地址:https://www.cnblogs.com/zhangtengccie/p/10355597.html