如何在matlab中使用base64输出重现相同的python hmac
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在matlab中使用base64输出重现相同的python hmac相关的知识,希望对你有一定的参考价值。
我有这个创建签名的python代码片段
signature = base64.b64encode(hmac.new(self.__private_key, message_to_sign, sha).digest())
签名的输出是7WBwddbqe2BQEvLC20bwOFPt2fk =
通过运行调试器,我可以看到message_to_sign和我的private_key
我的理解是,如果我运行hmac函数然后运行base64编码函数,我应该得到相同的结果,但它显示不同的结果,如下例所示:
如果我在matlab中设置
msg= 'GET
Fri, 02 Mar 2018 16:31:09 +0000
/api/annotation/5357434.json';
hash = HMAC(key,message,'SHA-1');
test = base64encode(hash);
test = / svUNw1mx9nMndf7aXvQEUu + NkQ =
我试过的hmac函数:
- https://www.mathworks.com/matlabcentral/fileexchange/46182-hmac-hash-message-authentication-code-function
- https://www.mathworks.com/matlabcentral/mlc-downloads/downloads/submissions/34162/versions/1/previews/doHMAC_SHA1.m/index.html?access_key=
base64:
python版本:2.7.13
matlab版:2016a
我怎样才能从python中重现相同的结果?
答案
我通过使用正确的换行符来解决这个问题,这个换行符是char(10)而不是之前的/ n。
message=['GET',char(10),char(10),char(10),'Fri, 02 Mar 2018 16:31:09 +0000',char(10),'/api/annotation/5357434.json'];
以上是关于如何在matlab中使用base64输出重现相同的python hmac的主要内容,如果未能解决你的问题,请参考以下文章