我正在考慮實現一個在Java中獲得Twitter authorization via Oauth的應用程序。第一步是getting a request token。這是適用於應用引擎的Python example。如何用Java生成等價於Python示例的HMAC?
爲了測試我的代碼,我運行Python和與Java檢查輸出。這裏是Python生成基於散列的消息認證碼(HMAC)的例子:
3210輸出:
$ ./foo.py
+3h2gpjf4xcynjCGU5lbdMBwGOc=
如何一次重複該實施例中在Java中?
我已經看到在Java中example of HMAC:
try {
// Generate a key for the HMAC-MD5 keyed-hashing algorithm; see RFC 2104
// In practice, you would save this key.
KeyGenerator keyGen = KeyGenerator.getInstance("HmacMD5");
SecretKey key = keyGen.generateKey();
// Create a MAC object using HMAC-MD5 and initialize with key
Mac mac = Mac.getInstance(key.getAlgorithm());
mac.init(key);
String str = "This message will be digested";
// Encode the string into bytes using utf-8 and digest it
byte[] utf8 = str.getBytes("UTF8");
byte[] digest = mac.doFinal(utf8);
// If desired, convert the digest into a string
String digestB64 = new sun.misc.BASE64Encoder().encode(digest);
} catch (InvalidKeyException e) {
} catch (NoSuchAlgorithmException e) {
} catch (UnsupportedEncodingException e) {
}
它採用javax.crypto.Mac,都好。但是,SecretKey構造函數需要字節和算法。
Python示例中的算法是什麼?如何在沒有算法的情況下創建Java密鑰?
好一個相當於!謝謝。 – dfrankow 2010-07-09 14:22:09
@Bruno嗨,你能解釋我如何「填零」這裏的密鑰,如果它比推薦框的大小,這是SHA1 TNX – Spring 2012-12-27 00:39:00
160位非常感謝你,很好的例子小。儘管如此,我認爲你一定會用Apache Commons Codec或Guava編碼器改變你的代碼示例;) – Brice 2013-05-02 17:41:06