反射
1 import os 2 mo = "common" 3 # path = os.path.dirname(os.path.abspath(__file__)) 4 mod = __import__("other."+ mo,fromlist=True)#反射的方式导入一个模块,other.是模块的目录,mo是模块 5 6 7 # setattr() 在某个模块设置某个功能 8 # delattr() 在某个模块删除某个功能 9 10 def fun(): 11 p = input("Please enter operate:") 12 13 if hasattr(mod,p):# hasattr() 在某个模块中某个功能是否存在 14 a = getattr(mod,p)# getattr() 在某个模块中得到某个功能 15 a() 16 else: 17 print("404") 18 19 20 if __name__ == ‘__main__‘: 21 fun()
hashlib
用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法
1 import hashlib 2 3 # ######## md5 ######## 4 5 hash = hashlib.md5() 6 hash.update(b‘admin‘) 7 print(hash.hexdigest())#hexdigest 16进制 8 9 # ######## sha1 ######## 10 11 hash = hashlib.sha1() 12 hash.update(b‘admin‘) 13 print hash.hexdigest() 14 15 # ######## sha256 ######## 16 17 hash = hashlib.sha256()#比md5安全 18 hash.update(b‘admin‘) 19 print(hash.hexdigest()) 20 21 22 # ######## sha384 ######## 23 24 hash = hashlib.sha384() 25 hash.update(b‘admin‘) 26 print(hash.hexdigest()) 27 28 # ######## sha512 ######## 29 30 hash = hashlib.sha512() 31 hash.update(b‘admin‘) 32 print(hash.hexdigest())
以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。
1 import hashlib 2 3 # ######## md5 ######## 4 5 hash = hashlib.md5(b‘898oaFs09f‘) 6 hash.update(b‘admin‘) 7 print(hash.hexdigest())
python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密,常用于网络消息的加密传输。
1 import hmac 2 h = hmac.new(b‘xxx‘) 3 h.update(b‘hellowo‘) 4 print(h.hexdigest())
时间: 2024-12-23 11:46:17