Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用hmac和sha256 isn';不能给出与javascript相同的结果_Javascript_Python_Json_Encryption - Fatal编程技术网

使用hmac和sha256 isn';不能给出与javascript相同的结果

使用hmac和sha256 isn';不能给出与javascript相同的结果,javascript,python,json,encryption,Javascript,Python,Json,Encryption,我试图在python和javascript中获得相同的结果,但是当我在加密中遇到问题时,加密在javascript和python中给了我相同的结果,但如果我将数据放在json格式,然后进行加密,我会得到不同的结果。我可以更改javascript代码,因为对于api,python代码可以根据需要进行修改。 Python代码: 从日期时间导入日期时间 导入json 导入hashlib 进口hmac 导入base64 s=“2017-12-11 23:31:55” 数据1=dict(时间戳=s) ms

我试图在python和javascript中获得相同的结果,但是当我在加密中遇到问题时,加密在javascript和python中给了我相同的结果,但如果我将数据放在json格式,然后进行加密,我会得到不同的结果。我可以更改javascript代码,因为对于api,python代码可以根据需要进行修改。
Python代码:

从日期时间导入日期时间
导入json
导入hashlib
进口hmac
导入base64
s=“2017-12-11 23:31:55”
数据1=dict(时间戳=s)
msg_data=json.dumps(数据1)
打印msg_数据
消息=字节。编码('utf-8')
secret=字节(“secret”).encode('utf-8')
msg_data2=字节(msg_data).encode('utf-8')
signature=base64.b64encode(hmac.new(secret,message,digestmod=hashlib.sha256.digest())
打印“不带json”
打印(签名)#xzqvjdkyg8nritjimnxfzndudb+JIr7Vm+f3CabETY=
signature=base64.b64encode(hmac.new(secret,msg_data2,digestmod=hashlib.sha256.digest())
打印“使用json”
打印(签名)#RnxbwptM7HuEE1SPResxc4A6tVDqhv3DxWP75g8pfik=
JS代码:


/*
https://raw.githubusercontent.com/jkiss/crypto-js/master/tags/3.1.2/build/rollups/hmac-sha256.js
CryptoJS v3.1.2
code.google.com/p/crypto-js
(c) 2009-2013杰夫·莫特。版权所有。
code.google.com/p/crypto-js/wiki/License
*/
var CryptoJS=CryptoJS | |函数(h,s){var f={},g=f.lib={},q=function(){},m=g.Base={extend:function(a){q.prototype=this;var c=new q;a&&c.mixIn(a);c.hasOwnProperty(“init”)|(c.init=function(){c.$super.init.apply(this,arguments)});c.init.prototype=c;c.$super=this;return=this;return c},create:function=function=this;extend=this=this.init.init({.init)参数)},init:function(){},mixIn:function(a){for(var c in a)a.hasOwnProperty(c)&&(this[c]=a[c]);a.hasOwnProperty(“toString”)&&&(this.toString=a.toString)},clone:function(){返回this.init prototype.extend(this)},
2.1.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.1.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2 d);this.sigBytes+=a;返回this},clamp:function(){var a=this.words,c=this.sigBytes;a[c>>>2]&=42949672952]>>24-8*(b%4)&255;d.push((e>>>4.toString(16));d.push((e&15.toString(16))}返回d.join(“”),解析:函数(a){for(var c=a.length,d=[],b=0;b>>3]=parseInt(a.substr,
2) ,16)2]>>>24-8*(b%4)和255));返回d.join(“”),解析:函数(a){for(var c=a.length,d=[],b=0;b>>2]|=(a.charCodeAt(b)和255)p)a[p]=
c[d+p[d+p[d[d+p[p[p[p[p[p[p[p[p[p[p[p[p[p[c[p[c[d[d+p[d[p[p[d[p[d[p[p[p[d[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[p[c 0;j=g;g=f;f=e;e=k+l|0}b[0]=b[0]+e|0;b[1]=b[1]+f|0;b[2]=b[2]+g|0;b[3]=b[3]+j|0;b[4]=b[4]+h|0;b[5]=b[5]+m1240;b[6]=b[6]+n1240;b[7]=b},doFinalize:function(){var a=this.\u data,d=a.words,b=8*this.\u ndababytes,e=8*a.sigBytes;

(a%4)和255)2>>>>24-8*((a+1%1)%4和255)2>>>>>24-8*((a+1%4)>>>5.5>>>5.5>>5.5>>5.5五五五个月(a+5>>5.5>>5)5.5>>5.5>>5>>4.5>>5>>4.8*(a.8*(a+8.>5.8.>5.5>5.5.5.5>>5>5.5>5.5.5>>5>>5.>5.5.5>5.5.5.5>5.5.>5.>5.5.5.5.>5.5.>5.8*(a>5>5.5.5.5>5.8*(a>5.8*(a>5.8*(a.8*(a.5.c&&(e=c);对于(var c=[],a=0,d=0;d6-2*(d%4);c[a>>>2]|=(g|h)你在散列不同的数据

在Python版本中,
msg_data
是:

{"timestamp": "2017-12-11 23:31:55"}
            ^^^
{"timestamp":"2017-12-11 23:31:55"}
            ^^
在Javascript版本中,
json
是:

{"timestamp": "2017-12-11 23:31:55"}
            ^^^
{"timestamp":"2017-12-11 23:31:55"}
            ^^

请注意,在JS版本中,
“timestamp”:
后面没有空格。并非所有JSON实现都会为相同的数据生成完全相同的输出。(当字典中有多个键时,您会遇到更多问题——JSON不会对键的显示顺序设置任何要求。)您正在散列不同的数据

在Python版本中,
msg_data
是:

{"timestamp": "2017-12-11 23:31:55"}
            ^^^
{"timestamp":"2017-12-11 23:31:55"}
            ^^
在Javascript版本中,
json
是:

{"timestamp": "2017-12-11 23:31:55"}
            ^^^
{"timestamp":"2017-12-11 23:31:55"}
            ^^

请注意,在JS版本中,
“timestamp”:
后面没有空格。并非所有JSON实现都会为相同的数据生成完全相同的输出。(当字典中有多个键时,您会遇到更多问题——JSON不会对键的显示顺序设置任何要求。)python中的msg_数据和javascript中的json数据可能略有不同


python中的msg_数据

{"timestamp": "2017-12-11 23:31:55"}
json
来自javascript:

{"timestamp":"2017-12-11 23:31:55"}
使用可选选项删除以下各项后的默认空格:

msg_data = json.dumps(data1, separators=(',', ':'))

python中的
msg_data
和javascript中的
json
可能略有不同


python中的msg_数据:

{"timestamp": "2017-12-11 23:31:55"}
json
来自javascript:

{"timestamp":"2017-12-11 23:31:55"}
使用可选选项删除以下各项后的默认空格:

msg_data = json.dumps(data1, separators=(',', ':'))