tr1+'&'是密钥,str2是加密的消息。
在发送数据以前,HMAC加密算法对数据块和双方约定的公钥进行“散列操作”,以生成称为“摘要”的东西,附加在待发送的数据块中。当数据和摘要到达其目的地时,就使用HMAC加密算法来生成另一个校验和,如果两个数字相匹配,那么数据未被做任何篡改。
从python官网的pypi可以下载hmac的安装包,里面有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()