2017-09-06 22 views
1

在.net我生成的哈希這種方式:不同的結果生成SHA256散列與.net和反應本機庫(相同的輸入)

Convert.ToBase64String(SHA256.Create().ComputeHash(Encoding.UTF8.GetBytes("123456"))); 

結果是: 「jZae727K08KaOmKSgOaGzww/XVqGr/PKEgIMkjrcbJI =」

現在,我產生一個陣營原生應用的哈希與此library

import { sha256 } from 'react-native-sha256'; 
return await sha256('123456'); 

,其結果是:「8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c 92"

不知道我做錯了什麼......

編輯

最終解決方案(感謝馬丁Backasch):

var inputBytes = Encoding.UTF8.GetBytes("123456"); 
var hashBytes = SHA256.Create().ComputeHash(inputBytes); 
return BitConverter.ToString(hashBytes).Replace("-", string.Empty).ToLower(); 

回答

3

結果從庫HEX。 您必須將其轉換爲Base64

試試吧here

輸入:

"8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92" 

輸出:

"jZae727K08KaOmKSgOaGzww/XVqGr/PKEgIMkjrcbJI=" 

您可以通過使用microsoft或作爲快速片斷給出的例子中你的C#轉換結果從Base64HEX

var yourResult = Convert.ToBase64String(SHA256.Create() 
               .ComputeHash(Encoding.UTF8 
                    .GetBytes("123456"))); 

var apiResult = "8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92"; 

var yourHexResult = BitConverter.ToString(Convert.FromBase64String(yourResult)) 
           .Replace("-", string.Empty) 
           .ToLower(); 

Debug.Assert(yourHexResult == apiResult, "yourHexResult != apiResult"); 
相關問題