2016-02-29 5 views
2

Пожалуйста, обратите внимание на следующий код:SHA512 хеширования с Xamarin

SHA512 shaM = new SHA512Managed(); 
    byte[] data = shaM.ComputeHash(Encoding.UTF8.GetBytes("password")); 

    StringBuilder sBuilder = new StringBuilder(); 

    for (int i = 0; i < data.Length; i++) 
    { 
     sBuilder.Append(data[i].ToString("x2")); 
    } 

    string stringyHash = sBuilder.ToString(); 

Я использую выше метод для генерации SHA512 хэшируются пароль для андроид устройства с помощью Xamarin. Однако, когда я вывожу stringyHash я дал совершенно другой хэш к тому, что я ожидаю при использовании онлайн-сервиса хеширования, таких как: http://www.convertstring.com/Hash/SHA512

Разница для хэширования строки «пароль» между онлайн-инструментом и моей реализации Xamarin как следующим образом:

Xamarin:

cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e

Интернет инструмент:

B109F3BBBC244EB82441917ED06D618B9008DD09B3BEFD1B5E07394C706A8BB980B1D7785E5976EC049B46DF5F1326AF5A2EA6D103FD07C95385FFAB0CACBC86

Я относительно новым для Xamarin и имеют мало опыта хэширования как понятие, так что если кто-то может объяснить, почему две разные, и как настроить мой код, чтобы убедиться, что я делаю правильный хэш, было бы оценено.

+0

The * b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86 * это один порожденный .NET на Visual Studio ... Так что если есть проблема, то в Xamarin. – xanatos

+0

Я бы предложил вам, чтобы не хеш в вашем конечном устройстве (производительность). Скорее сделайте это в своем бэкэнде (webservice или около того). Также вы можете попробовать использовать класс SHA512 в .NET. См. Здесь: [link] (https://msdn.microsoft.com/de-de/library/system.security.cryptography.sha512 (v = vs.110) .aspx = –

+0

Это для проверки пароля, а не для создания , поэтому хэшированный PW уже хранится в фоновом режиме, но я бы предпочел не отправлять простой текстовый пароль по потенциально незащищенным сетям. – Aphire

ответ

2

cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e

Является ли хэш SHA-512 строки нулевой длины:

byte[] data = shaM.ComputeHash(Encoding.UTF8.GetBytes("")); 

Так есть проблема с тем, что вы подаете в ваш метод Xamarin.

+0

Вы абсолютно правы, по какой-то причине он получает пустую строку. спасибо, это одна загадка. – Aphire

Смежные вопросы