Java SHA256 HMAC未给出预期答案

Java SHA256 HMAC未给出预期答案,java,hmac,sha256,Java,Hmac,Sha256,这是用于AWS的REST身份验证。我得到的结果是: ulrEncodedResult:k1T%2FqvVoXgEvmdFhTEh71vLDznqEVCyKcslA5RRSB6s%3D 预期结果是: ulrEncodedResult:M%2Fy0%2BEAFFGaUAp4bWv%2FWEuXYah99pVsxvqtAuC8YN7I%3D 此处显示了身份验证的所有确切步骤: 有人能认出我犯的错误吗 一个问题是: String stringToSign = "GET" + "\n" +

这是用于AWS的REST身份验证。我得到的结果是: ulrEncodedResult:k1T%2FqvVoXgEvmdFhTEh71vLDznqEVCyKcslA5RRSB6s%3D

预期结果是: ulrEncodedResult:M%2Fy0%2BEAFFGaUAp4bWv%2FWEuXYah99pVsxvqtAuC8YN7I%3D

此处显示了身份验证的所有确切步骤:


有人能认出我犯的错误吗

一个问题是:

String stringToSign = "GET" + "\n" +
                    "webservices.amazon.com" + "\n" +
                    "/onca/xml" + "\n" +
                    "AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&ItemId=0679722769&Operation=ItemLookup&ResponeGroup=ItemAttributes%2COffers%2CImages%2CReviews&Service=AWSECommerceService&Timestamp=2009-01-01T12%3A00%3A00Z&Version=2009-01-06";


    SecretKeySpec keySpec = new SecretKeySpec(
            "1234567890".getBytes(),
            "HmacSHA256");

    Mac mac = Mac.getInstance("HmacSHA256");
    mac.init(keySpec);


    byte[] result = mac.doFinal(stringToSign.getBytes());
    String encodedResult = Base64.encodeBase64String(result);
    System.out.println("encodedResult: "+encodedResult);

    String urlEncodedResult = URLEncoder.encode(encodedResult, "UTF-8").replace("+", "%2B").replace("*", "%2A").replace("%7E", "~");
    System.out.println("ulrEncodedResult: "+urlEncodedResult);
还有这个

"1234567890".getBytes()

不要指定使用的字符编码(例如UTF8)。它将取决于您的平台或JVM设置,这可能与您想要的有所不同(我怀疑是UTF8)。我更喜欢使用
getBytes(CharSet)
变量。

尝试过,但不幸的是给出了相同的结果。当我尝试.getBytes(“UTF-8”)和.getBytes()时,它们给出了不同的结果,就像它们应该得到的一样,但通常结果保持不变……有人知道吗??
stringToSign.getBytes()