scala中的OAuth使用者密钥使用者密钥生成

时间:2012-10-22 23:51:19

标签: java scala oauth cryptography

我试图在我的scala播放应用程序中创建消费者密钥/密钥对但我似乎无法让它正常工作。 我有以下代码

import org.apache.commons.codec.binary.Base64
import javax.crypto.{KeyGenerator, Mac, SecretKey}
import javax.crypto.spec.SecretKeySpec

def hmacSha1(baseString:String) : String = {
    val MAC_NAME = "HmacSHA1"
    val keygen = KeyGenerator.getInstance(MAC_NAME);
    val macKey = keygen.generateKey();
    val mac = Mac.getInstance(MAC_NAME);
    val secret = new SecretKeySpec(macKey.getEncoded(), mac.getAlgorithm());
    mac.init(secret);
    val digest = mac.doFinal(s.getBytes());
    val result= new binary.Base64().encode(digest)
    result.toString
}

但是当我在baseString中加入类似" Anthony"我总是找回一个看起来像这样的字符串

"[B@2008bf02" 

因为我希望能得到更像这样的东西

“w/FdJ7y1qwe3HX/VmPiACTn01Zc=“ 

1 个答案:

答案 0 :(得分:1)

您没有正确地将编码的字节数组转换为字符串。 Base64类有一个方法可以帮助您。就这样做:

    mac.init(secret);
    val digest = mac.doFinal(s.getBytes());
    new binary.Base64().encodeBase64String(digest);
}

更传统的方式是:

    mac.init(secret);
    val digest = mac.doFinal(s.getBytes());
    val result= new binary.Base64().encode(digest)
    new String(result, "ASCII");
}