0
我嘗試了很多創建簽名以訪問一個Web服務。使用HMAC SHA-256和Base64Encoder簽名
他們要求我爲每個請求生成一個簽名。
爲了生成簽名,我有一個消息說「abc」,一個祕密鍵稱爲「xyz」。據他們說我的簽名應爲以下Ruby代碼
require 'base64'
require 'openssl'
secret = "xyz"
request = "abc"
digest = OpenSSL::Digest::Digest.new('sha256')
signature = Base64.encode64(OpenSSL::HMAC.digest(digest, secret, request)).chomp
signature
處理應該是9ZjsfVB3k5nPNLf5he+gfyYaxNWCIJ6J8YcRpxW5GG0=
,但我沒有得到這個使用Java代碼是如下:
SecretKey secretKey = null;
byte[] keyBytes = keyString.getBytes("UTF-8");
Mac mac = Mac.getInstance("HMACHSA256");
secretKey = new SecretKeySpec(keyBytes,mac.getAlgorithm());
mac.init(secretKey);
byte[] text = baseString.getBytes("UTF-8");
//mac.update(digest.digest());
byte[] encodedText = mac.doFinal(text);
return new String(Base64.encodeBase64(encodedText)).trim();
請幫我在這。
是*「HMACHSA256」*錯字?它是你粘貼的實際運行代碼嗎?不應該該字符串,一開始,「* HMACSHA256」*? – TacticalCoder 2012-01-10 18:45:05
是的,這是我的運行代碼,我得到的簽名,但它不正確的簽名。 – user1141515 2012-01-11 15:33:37
@ user1141515:有趣的是,你應該得到一個'NoSuchAlgorithmException' - 我也想你打算在上面輸入「HMACSHA256」。 – 2012-01-11 17:38:03