【发布时间】:2015-08-23 19:05:30
【问题描述】:
我有 C# 代码:
byte[] bytes = new UnicodeEncoding().GetBytes(input);
return Convert.ToBase64String(new SHA256Managed().ComputeHash(bytes));
将字符串编码为 SHA2 哈希,然后进行 base 64 编码。我需要把它转换成 Ruby。
我尝试了几种方法。这是其中之一:
hash = Digest::SHA256.digest(val.encode('utf-8'))
encoded = Base64.urlsafe_encode64(hash)
我的代码都产生了不匹配的相同结果。我不能让他们工作。任何有关转换的帮助将不胜感激。
更新
经过一番折腾,我能够让它与硬编码数组一起工作,问题是 C# 代码在数组中的每个元素后添加了一个 0。这是工作的 ruby 代码(带有硬编码数组):
Digest::SHA256.base64digest([99,0,104,0,97,0,100,0].pack('C*').force_encoding('utf-16'))
我想我可以遍历数组,但这似乎没有必要。
【问题讨论】: