简体   繁体   English

在Java上移植Python hmac产生了不同的结果

[英]Port Python hmac on Java produsing different result

I don't know Python( Trying port this Python script on Java (Google Music Api (unoficial)): 我不知道Python(尝试在Java(Google Music Api(非官方))上移植此Python脚本:

import base64
import hmac
from hashlib import sha1

base = "11"
key = "34ee7983-5ee6-4147-aa86-443ea062abf774493d6a-2a15-43fe-aace-e78566927585"
salt = '1386759932759'

mac = hmac.new(key, base, sha1) 
mac.update(salt)
sig = base64.urlsafe_b64encode(mac.digest())
print sig;
#nYVoP7wXhJAMGLlY4mcCwfIilMw=

Java version: Java版本:

String sig = "";
String salt = "1386759932759";
String base_string = "11";
String key = "34ee7983-5ee6-4147-aa86-443ea062abf774493d6a-2a15-43fe-aace-e78566927585";
try {
    Mac mac = Mac.getInstance("HmacSHA1");
    SecretKeySpec secret = new SecretKeySpec(key.getBytes("UTF-8"), mac.getAlgorithm());
    mac.init(secret);
    mac.update(salt.getBytes("UTF-8"));
    byte[] digest = mac.doFinal(base_string.getBytes());
    sig = new String(android.util.Base64.encode(digest, android.util.Base64.URL_SAFE));
} catch (Exception e) {
    e.printStackTrace();
}
AQUtility.debug("computeSignature",sig);
//Return: H2in0WNfxSCEz3CHNrMVbqfgXt4=

Why result different? 为什么结果不同? Help pls( 帮助请(

Found error. 发现错误。 Need do base before salt: 盐前需要做碱:

String sig = "";
String salt = "1386759932759";
String base_string = "11";
String key = "34ee7983-5ee6-4147-aa86-443ea062abf774493d6a-2a15-43fe-aace-e78566927585";
try {
    Mac mac = Mac.getInstance("HmacSHA1");
    SecretKeySpec secret = new SecretKeySpec(key.getBytes("UTF-8"), mac.getAlgorithm());
    mac.init(secret);
    mac.update(base_string.getBytes());
    byte[] digest = mac.doFinal(salt.getBytes());
    sig = new String(android.util.Base64.encode(digest, android.util.Base64.URL_SAFE));
} catch (Exception e) {
    e.printStackTrace();
}
AQUtility.debug("computeSignature",sig);
//nYVoP7wXhJAMGLlY4mcCwfIilMw=

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM