1
我有這段代碼需要轉換爲ruby,此代碼段用於創建用於特定API的安全密鑰。我正在加密的字符串是一個JSON對象。將C#轉換爲Ruby-MD5和Base 64 a字符串
我應該用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);
}
紅寶石代碼
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))
@NeilSlater對不起,請參閱更新的詳細信息。 – olleh
感謝您的更新。在Ruby中編寫一個散列校驗器來處理C#產生的內容,或者僅僅爲了讓Ruby和C#使用相同的API來重建代碼而存在差異。 C#代碼是將代碼發送到Ruby的系統的一部分,反之亦然(在這種情況下,您可能需要關心如何通過Ruby或C#對JSON進行序列化)?如果沒有,那麼你可以從你顯示的代碼中得到答案。 –