Python中文
首页
教程
问答
标签
搜索
登录
注册
java相当于python进行哈希处理
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我在java文档中有以下代码(它以<code>secret_key</code>和<code>data</code>作为输入):</p> <pre><code>javax.crypto.Mac mac = javax.crypto.Mac.getInstance("HmacSHA1") mac.init(new javax.crypto.spec.SecretKeySpec(secret_key.getBytes(), "HmacSHA1")) byte[] hexBytes = new org.apache.commons.codec.binary.Hex().encode(mac.doFinal(data.getBytes())) String signature = new String(hexBytes, "UTF-8") </code></pre> <p>在联机进行了一些RnD之后,我编写了等效的python来:</p> ^{pr2}$ <p>但在头中使用这个签名值执行post请求时,我得到</p> <blockquote> <p>ValueError: Invalid header value 'XXXXXXXXXX'</p> </blockquote> <p>我的python等价物正确吗?如果有人能解释的话,那将是很大的帮助!在</p> <p><strong>编辑</strong></p> <p>爪哇</p> <pre><code>public static void main(String[] args) throws NoSuchAlgorithmException, InvalidKeyException, UnsupportedEncodingException { String secret_key = "c84766ca4a3ce52c3602bbf02ad1f7"; String data = "some data"; javax.crypto.Mac mac = javax.crypto.Mac.getInstance("HmacSHA1"); mac.init(new javax.crypto.spec.SecretKeySpec(secret_key.getBytes(), "HmacSHA1")); byte[] hexBytes = new org.apache.commons.codec.binary.Hex().encode(mac.doFinal(data.getBytes())); String signature = new String(hexBytes, "UTF-8"); System.out.println("signature : "+signature); } </code></pre> <p><strong>o/p</strong></p> <pre><code>signature : 2b565c0476eed0f350ddb3a2852a4cab91281bdc </code></pre> <p><strong>Python:</strong></p> <pre><code>In [1]: import hmac In [2]: import hashlib In [3]: secret_key = "c84766ca4a3ce52c3602bbf02ad1f7" In [4]: data = "some data" In [5]: decodedKey = secret_key.decode("hex") In [6]: hmac_val = hmac.new(decodedKey, data.encode('UTF-8'), hashlib.sha1) In [7]: signature = hmac_val.digest().encode('base64') In [8]: signature Out[8]: '3qE5SqSdvBEJcy8mSF+srqNXCd4=\n' In [9]: </code></pre>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>引用此线程:</p> <p>{a1}</p> <p>对于<code>sha1</code>,下面是简单等效的:</p> <pre><code>In [13]: print hmac.new(secret_key, data, hashlib.sha1).hexdigest() 2b565c0476eed0f350ddb3a2852a4cab91281bdc </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
想用靓汤抢夺价值
7 回答
想申请一份符合工作描述的简历吗
10 回答
想画网格,Python
7 回答
想白痴化我的Python战舰
5 回答
想看两列日期,但只上
1 回答
想看看我写的这个脚本读一个Fortran二进制fi吗
7 回答
想知道Django是如何实现ORM查询优化的吗
6 回答
想知道GeoDjango和地图服务吗
8 回答
想知道Image.resize操作在PIL文件中的详细工作方式吗
2 回答
想知道matplotlib pyplot为什么不调整边距
5 回答
想知道matplotlib颜色的颜色代码吗
7 回答
想知道pd.factorize,pd.get_dummies,sklearn.preprocessing.labeencoder和OneHotEncod之间的区别
9 回答
想知道property()在python中的实际用法吗
1 回答
想知道pyodidejs是如何工作的吗?
10 回答
想知道pyparsing==2.0.1的已完成处理依赖关系
7 回答
想知道ScikitLearn中的编码算法吗
6 回答
想知道VTK 5.04和VTK 5.4.2的vtkMassProperties差异吗
8 回答
想知道一个特定字符在一个特定句子中出现的次数吗
3 回答
想知道两个不同子集的重叠中有多少个对象吗
6 回答
想知道为什么is_素数函数的结果不正确吗
4 回答