首页 > 代码库 > python基础学习日志day5--hashlib模块

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(badmin)
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模块