2012-07-05 57 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我相同的一对夫妇的快速测试。