Python中文
首页
教程
问答
标签
搜索
登录
注册
Python与JavaScript中的HMAC SHA256
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我想用JavaScript重新实现一个特定的API客户机,它是用Python编写的。我无法复制HMAC SHA256签名函数。对于某些键,输出相同,但对于某些键,输出不同。解码其Base64表示后,如果密钥由可打印字符组成,则输出似乎是相同的</p> <h2>Python</h2> <pre><code>#!/usr/bin/env python3 import base64 import hashlib import hmac def sign_string(key_b64, to_sign): key = base64.b64decode(key_b64) signed_hmac_sha256 = hmac.HMAC(key, to_sign.encode(), hashlib.sha256) digest = signed_hmac_sha256.digest() return base64.b64encode(digest).decode() print(sign_string('VGhpcyBpcyBhIHByaW50YWJsZSBzdHJpbmcuCg==', "my message")) print(sign_string('dGhlIHdpbmQgb2YgTXQuIEZ1amkK', "my message")) print(sign_string('pkmNNJw3alrpIBi5t5Pxuym00M211oN86IhLZVT8', "my message")) </code></pre> <h2>JavaScript</h2> <pre><code><script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/hmac-sha256.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/enc-base64.min.js"></script> <script> function sign_string(key_b64, to_sign) { key = atob(key_b64) var hash = CryptoJS.HmacSHA256(to_sign, key); var hashInBase64 = CryptoJS.enc.Base64.stringify(hash); document.write(hashInBase64 + '<br>'); } sign_string('VGhpcyBpcyBhIHByaW50YWJsZSBzdHJpbmcuCg==', "my message") sign_string('dGhlIHdpbmQgb2YgTXQuIEZ1amkK', "my message") sign_string('pkmNNJw3alrpIBi5t5Pxuym00M211oN86IhLZVT8', "my message") </script> </code></pre> <h2>输出</h2> <p><strong>Python</strong></p> <pre><code>TdhfUQfym16HyWQ8wxQeNVvJKr/tp5rLKHYQSpURLpw= pQ5NzK3KIWjqc75AXBvWgLK8X0kZvjRHXrLAdxIN+Bk= 8srAvMucCd91CWI7DeCFjxJrEYllaaH63wmVlMk0W+I= </code></pre> <p><strong>JavaScript</strong></p> <pre><code>TdhfUQfym16HyWQ8wxQeNVvJKr/tp5rLKHYQSpURLpw= pQ5NzK3KIWjqc75AXBvWgLK8X0kZvjRHXrLAdxIN+Bk= 31QxOpifnpFUpx/sn336ZmmjkYbLlNrs8NP9om6nPeY= </code></pre> <p>正如你所看到的,前两个是相同的,而后一个是不同的</p> <p><strong>如何更改JavaScript代码,使其行为与python代码相同?</strong></p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>在第三个示例中,您在python和JavaScript版本中使用了不同的参数。 在python中: 符号字符串('xTsHZGfWUmnIpSu+TaVraECU88O3j9qVjlwTWGb/C8k=',“我的消息”) 在JavaScript中: 符号字符串('pkmNNJw3alrpIBi5t5Pxuym00M211oN86IhLZVT8',“我的消息”)</p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
python语法错误(如果不在Z中,则在X中表示s)
7 回答
Python语法错误(无效)概率
4 回答
python语法错误*带有可选参数的args
6 回答
python语法错误2.5版有什么办法解决吗?
10 回答
Python语法错误2.7.4
1 回答
python语法错误30/09/2013
1 回答
Python语法错误E001
4 回答
Python语法错误not()op
5 回答
python语法错误outpu
9 回答
Python语法错误print len()
8 回答
python语法错误w3
6 回答
Python语法错误不是caugh
2 回答
python语法错误及yt-packag的使用
5 回答
python语法错误可以查出来!!瓦里亚布
3 回答
Python语法错误可能是缩进?
7 回答
Python语法错误和缩进
6 回答
Python语法错误在while循环中生成随机numb
8 回答
Python语法错误在哪里?
1 回答
python语法错误在尝试导入包时,但仅在远程运行时
6 回答
Python语法错误在电子邮件地址提取脚本中
8 回答