F# преобразование hmac Python в F#

Как бы я конвертировать этот код 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)

Простая проблема, я не могу найти то, что представляет hexdigest() функция в F#.

Кроме того, я объединяю API_Secret с сообщением, как я сделал, или они должны быть отделены?

1 ответ

Решение

Я думаю, что вам нужно что-то вроде этого:

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 делает в питоне (если я получу hexdigest право)

Другие вопросы по тегам