将c#转换为Ruby - MD5和Base 64字符串

本文关键字:Base 字符串 MD5 转换 Ruby | 更新日期: 2023-09-27 18:08:21

我有这段代码,我需要转换为ruby,这段代码是为了创建一个用于特定API的安全密钥。我正在加密的字符串是一个JSON对象。

我应该使用Digest::MD5.hexdigest()还是Digest::MD5.digest() ?

c#代码

string strResponse = "[{'"Key'":'"BookNumber'", '"Value'"=>'"BJAK123'"},{'"Key'"=>'"AuthorCode'", '"Value'"=>'"BNA123'"}]";
using (MD5 md5 = MD5.Create())
{
    byte[] bPayload = Encoding.UTF8.GetBytes(strPayload);
    byte[] bPayloadHash = md5.ComputeHash(bPayload);
    strPayloadBase64 = Convert.ToBase64String(bPayloadHash);
}
Ruby代码

payload = [{"Key"=>"BookNumber", "Value"=>"BJAK123"},{"Key"=>"AuthorCode", "Value"=>"BNA123"}]

utf8_params = payload.to_json.force_encoding("iso-8859-1").force_encoding("utf-8")
payload_base64 = Base64.encode64(Digest::MD5.hexdigest(utf8_params))

将c#转换为Ruby - MD5和Base 64字符串

使用

payload_base64 = Digest::MD5.base64digest(utf8_params)

作为Digest::MD5.hexdigest产生一个十六进制摘要字符串,而c#代码执行base64编码的摘要。