如何在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

enter image description here

我的理解是,如果我运行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函数:

  1. https://www.mathworks.com/matlabcentral/fileexchange/46182-hmac-hash-message-authentication-code-function
  2. https://www.mathworks.com/matlabcentral/mlc-downloads/downloads/submissions/34162/versions/1/previews/doHMAC_SHA1.m/index.html?access_key=

base64:

  1. https://www.mathworks.com/matlabcentral/fileexchange/39526-byte-encoding-utilities

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的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 python 中的 pandas 合并重现 R 中 foverlaps 的相同输出?

如何将音频文件转为base64 编码

如何在 C# 中实现 Base64 URL 安全编码?

matlab中长度可变的数组保存起来

matlab里如何把一个矩阵相同列向量的列序号依次输出出来?

如何为 AutoIt 和 PowerShell 获得相同的 base64 编码?