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

Java scala中OAuth使用者秘密使用者密钥的生成,java,scala,oauth,cryptography,Java,Scala,Oauth,Cryptography,我正在尝试在scala play应用程序中创建用户机密/密钥对,但我似乎无法使其正常工作。 我有以下代码 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_NAM

我正在尝试在scala play应用程序中创建用户机密/密钥对,但我似乎无法使其正常工作。 我有以下代码

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
}
但是当我为类似“Anthony”的东西添加基本字符串时,我总是得到一个类似这样的字符串

"[B@2008bf02" 
“w/FdJ7y1qwe3HX/VmPiACTn01Zc=“ 
当我希望得到更像这样的东西时

"[B@2008bf02" 
“w/FdJ7y1qwe3HX/VmPiACTn01Zc=“ 

您没有正确地将编码字节数组转换为字符串。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");
}

binary.Base64()-是org.apache.commons.codec.binary.Base64的缩写吗?是的,我会更新我的问题谢谢!现在,对于结果“3vZ4DTt/qy/DmHER8OHdmW1TQ50=”我得到了以下结果