【问题标题】:sign a string in java and SHA256在 java 和 SHA256 中签署一个字符串
【发布时间】: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()));
}

【问题讨论】:

标签: java encryption sha256


【解决方案1】:

如果他们获得 IRP(集成注册管道)的 Amazon 文档,只是为了帮助其他人 - 请注意,他们签署查询字符串的示例结果是错误的。

【讨论】:

  • Joy.. 当示例不起作用(不)时总是很好。可能有助于下一个人包含指向您正在使用的示例的链接以及正确的结果。
猜你喜欢
  • 2011-07-28
  • 1970-01-01
  • 1970-01-01
  • 2018-09-24
  • 1970-01-01
  • 2014-11-12
  • 2021-11-19
  • 1970-01-01
  • 2013-05-28
相关资源
最近更新 更多