python(6)- hashlib模块

加密算法: SHA1,SHA224, SHA256, SHA384, SHA512 , MD5

1. md5

import hashlib

m = hashlib.md5()
m.update(b"Hello")     #加密
m.update(b"It's me")   #再加密一句
print(m.digest())    #二进制
print(m.hexdigest())   #16进制

 

2.SHA1

#SHA1
m = hashlib.sha1()
m.update(b"Hello")     #加密
m.update(b"It's me")   #再加密一句
print(m.digest())    #二进制
print(m.hexdigest())   #16进制

 

3. SHA512

#SHA512
m = hashlib.sha512()
m.update(b"Hello")     #加密
m.update(b"It's me")   #再加密一句
print(m.digest())    #二进制
print(m.hexdigest())   #16进制

#其它加密方法类似

 

4. 如果你觉得上面的方法还不够屌,那么还有一个hmac模块

import hmac
h = hmac.new(b'secret_key')    #生成key
h.update(b'hello')    #加密
print(h.hexdigest())

下面是hmac模块使用案例

#下面是一个简单的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()
#该代码片段来自于: http://www.sharejs.com/codes/python/1880
posted @ 2016-03-14 00:06  黄小墨  阅读(352)  评论(0编辑  收藏  举报