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()