In Windows Phone 8 konnte ich so etwas wie dies tun:SHA1-Hash nicht das gleiche zwischen Windows Phone 8.1 App und UWP App
SHA1Managed s = new SHA1Managed();
UTF8Encoding enc = new UTF8Encoding();
s.ComputeHash(enc.GetBytes(password.ToCharArray()));
string hash = BitConverter.ToString(s.Hash).Replace("-", "").ToLower();
Für UWP App ich tue:
IBuffer buffUtf8Msg = CryptographicBuffer.ConvertStringToBinary(password, BinaryStringEncoding.Utf8);
HashAlgorithmProvider objAlgProv = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha1);
IBuffer buffHash = objAlgProv.HashData(buffUtf8Msg);
if (buffHash.Length != objAlgProv.HashLength)
{
throw new Exception("There was an error creating the hash");
}
string strHashBase64 = CryptographicBuffer.EncodeToBase64String(buffHash);
string hash = strHashBase64.Replace("-", "").ToLower();
Ich bekomme nicht das gleiche Ergebnis.
Zum Beispiel, wenn ich den Text "Windows 8" hätte, würde ich bekommen
6517856f8c3a3fda3ae28305a05d127f0e1bdb97
(Windows Phone 8.1)
und
zrefb4w6p9o64omfof0sfw4b25c=
(UWP)
ich nicht ganz weiß was ich falsch mache. Das Ziel ist, nur den SHA1-Hash einer Zeichenfolge zu erhalten.
Ersetzen Sie "EncodeToBase64String" durch "EncodeToHexString", dann erhalten Sie das gleiche Ergebnis. –