【发布时间】:2017-02-09 13:46:29
【问题描述】:
我正在尝试几天(!)使用 SHA256 使用密钥对以下字符串进行签名:“aaa”结果应该是(URL 编码): kvoJVZMPomuGyYP3cmiJkYz2L3usuZNfh2f9LaUxO3U%3D
有人可以帮忙吗?
GET
sellercentral.amazon.com
/gp/mws/registration/register.html
AWSAccessKeyId=AKIAFJPPO5KLY6G4XO7Q&SignatureMethod=HmacSHA256&SignatureVersion=2&id=1014f5ad-c359-4e86-8e50-bb8f8e431a9e&returnPathAndParameters=%2Forders%2FlistRecentOrders.jsp%3FsessionId%3D123
这是我正在使用的代码,但我无法得到相同的结果:
private static final String QUERY = "GET\n"+
"sellercentral.amazon.com\n"+
"/gp/mws/registration/register.html\n"+
"AWSAccessKeyId=AKIAFJPPO5KLY6G4XO7Q&SignatureMethod=HmacSHA256&SignatureVersion=2&id=1014f5ad-c359-4e86-8e50-bb8f8e431a9e&returnPathAndParameters=%2Forders%2FlistRecentOrders.jsp%3FsessionId%3D123";
public static void main(String[] args) throws Exception {
System.out.println(encode("aaa", QUERY));
}
public static String encode(String key, String data) throws Exception {
Mac sha256_HMAC = Mac.getInstance("HmacSHA256");
SecretKeySpec secret_key = new SecretKeySpec(key.getBytes(), "HmacSHA256");
sha256_HMAC.init(secret_key);
return Base64.encodeBase64String(sha256_HMAC.doFinal(data.getBytes()));
}
【问题讨论】:
-
您确定并且您不想对其进行哈希处理吗? stackoverflow.com/questions/3103652/…stackoverflow.com/questions/5531455/…
-
其实我也这么认为。查看您提供的链接,散列似乎不使用私钥。
-
It is similar, but not the same thing。 Re: 结果应该是…… 你怎么知道结果应该是什么?如果您正在遵循示例,您可以发布您正在使用的链接吗?
-
显然我下面的例子有错误的结果。该示例实际上是从巨型亚马逊发送的。我简直不敢相信他们的文档有这样的错误结果。
标签: java encryption sha256