2012-07-05 49 views
1

這個MD5調用有3個參數,「MD5」的字符串,然後在$ transaction_key斯卡拉MD5相當於這個PHP線

hash_hmac("md5", $api_login_id . "^" . $fp_sequence . "^" . $fp_timestamp . "^" . $amount . "^", $transaction_key); 

我怎麼會重現這在斯卡拉的?我找不到需要「鑰匙」的MD5功能。

+0

看看http://stackoverflow.com/questions/1609899/java-equivalent-to-phps-hmac-sha1它是用於Java的,但Scala使用的庫是Java的。 – fvu 2012-07-05 19:11:02

回答

8

下面是從this Java answer衍生的斯卡拉版本:

def encode(message: String, key: String) = { 
    val mac = javax.crypto.Mac.getInstance("HmacMD5") 
    mac.init(new javax.crypto.spec.SecretKeySpec(key.getBytes, "HmacMD5")) 
    mac.doFinal(message.getBytes).map("%02x".format(_)).mkString 
} 

它產生的輸出作爲PHP的hash_hmac我相同的一對夫婦的快速測試。