求解释一下这段签名算法,其中str1和str2是字符串变量,这个算法的逻辑是怎么样的?

2025-04-08 10:29:28
推荐回答(1个)
回答1:

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