2017-03-16 187 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)