簡體   English   中英

Scala中的OAuth消費者秘密消費者密鑰生成

[英]OAuth Consumer Secret Consumer Key generation in scala

我試圖在我的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”之類的東西添加baseString時,我總是會得到一個看起來像這樣的字符串

"[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");
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM