在Ruby中使用SHA256 Base64 Hash

时间:2017-03-16 16:43:26

标签: c# ruby cryptography sha256 sha

我们正在尝试在ruby中实现SHA256 Base64哈希,它不会像在C#中那样返回预期的结果。

以下是我们的C#示例代码。

    public static string HashSHA256ToBase64(string phrase)
    {
        if (phrase == null)
            return null;
        var encoder = new UTF8Encoding();
        var sha256Hasher = new SHA256CryptoServiceProvider();
        var hashedDataBytes = sha256Hasher.ComputeHash(encoder.GetBytes(phrase));

        return Convert.ToBase64String(hashedDataBytes);
    }

为此,我们需要在ruby中编写等效代码。我们正在尝试如下。

Base64.encode64(OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha256'), "", phrase))

它没有提供与C#相同的结果。

测试短语:V2dcZBpzzglD1ynW5ZAyFocs9wtpR624wlla9gujw0I = RquZ / QzazPM =

预期成果:utXwt733s9FmiSM69o2zGOm0IT42FjthbB0oquIuPak =

有人可以帮助我使用等效的ruby代码来解决这个问题吗

1 个答案:

答案 0 :(得分:3)

下面的代码修正了这个

Digest::SHA256.base64digest(phrase)