2017-03-16 207 views
0

我们正试图在ruby中实现SHA256 Base64哈希,它不返回C#中的预期结果。SHA256 Base64哈希红宝石

以下是我们的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代码来解决这个

+3

HMAC-SHA256不是SHA256。 – Aetherus

+2

我真的希望这与密码散列完全无关,因为SHA256对于这项任务来说危险不足。 – tadman

回答

3

下面的代码解决了这个问题

Digest::SHA256.base64digest(phrase)