Использует ли system.security.cryptography.sha1 реализацию алгоритма SHA1 библиотеки OpenSSL? - PullRequest
1 голос
/ 29 сентября 2010

или этот алгоритм реализован на заказ Microsoft?Я проверил, что SHA1, вычисленный с использованием OpenSSL на Mac, эквивалентен хешу, вычисленному в C # с использованием system.security.cryptography.sha1.

Ответы [ 2 ]

4 голосов
/ 29 сентября 2010

System.Security.Cryptography.SHA1 является абстрактным классом.Он имеет три реализации:

  • SHA1Managed : реализация на чистом C #
  • SHA1CryptoServiceProvider : реализация, предоставляемая Windows
  • SHA1Cng : еще одна («следующего поколения») реализация, предоставляемая Windows

Так что нет, ни одна из реализаций, поставляемых с .NET Framework, не использует OpenSSL внутри.

Mono поставляется с различными реализациями для этих классов.Все они используют одну и ту же реализацию , написанную на чистом C #.

Причина, по которой вы получаете один и тот же результат, заключается в том, что алгоритм SHA1 является детерминированным, то есть он всегда выдает абсолютно одинаковыерезультат для того же ввода.

2 голосов
/ 29 сентября 2010

Microsoft почти наверняка имеет свою собственную реализацию.

SHA-1 - это (детерминистическая) хеш-функция, поэтому вы должны получить одинаковые результаты с двумя разными реализациями, если примените ее к одним и тем же входным данным.Если вы этого не сделаете, это не только означает, что две реализации различны, это также означает, что одна из них глючит.

...