F#将hmac python转换为f#

时间:2014-06-25 07:28:43

标签: hash f# sha

如何将此Python代码转换为F#“

message = nonce + client_id + api_key
signature = hmac.new(API_SECRET, msg=message, digestmod=hashlib.sha256).hexdigest().upper()

我的代码到目前为止实现了这个目标:

let message =string(nonce)+ client_id + api_key
let signature = HMACSHA256.Create(API_secret+message)

简单的问题是我无法找到代表F#中的hexdigest()函数的内容。

另外,我是否将API_Secret与我所做的消息结合起来,还是必须将它们分开?

1 个答案:

答案 0 :(得分:4)

我认为你需要这样的东西:

let hexdigest (bytes : byte[]) =
   let sb = System.Text.StringBuilder()
   bytes |> Array.iter (fun b -> b.ToString("X2") |> sb.Append |> ignore)
   string sb

let signature =
   use hmac = new HMACSHA256.Create(API_secret)
   hmac.ComputeHash(message)
   |> hexdigest

使用StringBuilder的部分是hexdigest在python中的作用(如果我hexdigest正确的话)