古詩詞大全網 - 個性簽名 - 求解釋壹下這段簽名算法,其中str1和str2是字符串變量,這個算法的邏輯是怎麽樣的?

求解釋壹下這段簽名算法,其中str1和str2是字符串變量,這個算法的邏輯是怎麽樣的?

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