python基础学习日志day5--hashlib模块
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础学习日志day5--hashlib模块相关的知识,希望对你有一定的参考价值。
hashlib模块用于加密操作,代替了md5和sha模块,
主要提供SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法.
# -*- coding:utf-8 -*- __author__ = ‘shisanjun‘ import hashlib m=hashlib.md5() #使用MD5算法 m.update(b"hello") #必须加b,申明为byte m.update(b"It is me") print(m.digest()) #2进制格式hash m.update(b"hello It is me") print(m.digest()) print(m.hexdigest()) #16进制格式hash """ def digest(self, *args, **kwargs): # real signature unknown """ Return the digest value as a string of binary data. """ pass def hexdigest(self, *args, **kwargs): # real signature unknown """ Return the digest value as a string of hexadecimal digits. """ pass """
# -*- coding:utf-8 -*- __author__ = ‘shisanjun‘ import hashlib #md5算法加密 hash=hashlib.md5() hash.update(b‘admin‘) print(hash.hexdigest()) #sha1算法加密 hash=hashlib.sha1() hash.update(b"admin") print(hash.hexdigest()) #sha256算法加密 hash=hashlib.sha256() hash.update(b"admin") print(hash.hexdigest()) #sha512算法加密 hash=hashlib.sha512() hash.update(b"admin") print(hash.hexdigest())
python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密
散列消息鉴别码,简称HMAC,是一种基于消息鉴别码MAC(Message Authentication Code)的鉴别机制。使用HMAC时,消息通讯的双方,通过验证消息中加入的鉴别密钥K来鉴别消息的真伪;
一般用于网络通信中消息加密,前提是双方先要约定好key,就像接头暗号一样,然后消息发送把用key把消息加密,接收方用key + 消息明文再加密,拿加密后的值 跟 发送者的相对比是否相等,这样就能验证消息的真实性,及发送者的合法性了。
>>> import hmac >>> print hmac.new("mykey","Hello world !").hexdigest() d157e0d7f137c9ffc8d65473e038ee86 #下面是一个简单的C/S程序,使用了hmac签名 # 客户端 (signs the data) import xmlrpclib,hmac,hashlib key = "mysecret" server = xmlrpclib.ServerProxy("http://localhost:8888") name = "Homer" signature = hmac.new(key,name).hexdigest() print server.sayHello(signature,name) # 服务器 (verifies the signature) import SimpleXMLRPCServer,hmac,hashlib key = "mysecret" class MyClass: def sayHello(self, signature, name): if hmac.new(key,name).hexdigest() != signature: return "Wrong signature ! You‘re a hacker !" else: return u"Hello, %s !" % name server_object = MyClass() server = SimpleXMLRPCServer.SimpleXMLRPCServer(("localhost", 8888)) # (2) server.register_instance(server_object) # (3) print "Listening on port 8888" server.serve_forever()
以上是关于python基础学习日志day5--hashlib模块的主要内容,如果未能解决你的问题,请参考以下文章