我有一个Xamarin Forms XAML便携式项目。我需要从字符串中获取SHA256。我使用PCLCrypto来查找我的散列,因为System.Security.Cryptography在PCL中不存在。Xamarin PCLCrypto SHA256给出不同的散列
我从API获取sha256来比较值。这是我用来获取SHA256哈希的方法:
private string getSha256(string data) {
byte[] byteData = Encoding.UTF8.GetBytes(data);
var hasher = WinRTCrypto.HashAlgorithmProvider.OpenAlgorithm(HashAlgorithm.Sha256);
byte[] hash = hasher.HashData(byteData);
string hashBase64 = Convert.ToBase64String(hash);
return hashBase64;
}
我使用的字符串是'秘密'。我用这个来检查它:
http://www.xorbin.com/tools/sha256-hash-calculator ,它给:
2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b
但我发现了两个不同的散列码:
API哈希: 2bb80d537b1da3e38bd30361aa855686bde0eacd7162fef6a25fe97bf527a25b
PCLCrypto哈希我生成: K7gNU3sdo + OL0wNhqoVWhr3g6s1xYv72ol/pe/Unols =
它是相同的字符串'秘密',但导致不同的哈希值。我也注意到PCLCrypto散列总是以'='结尾。
他们为什么不同?