Код, который вы связали с atrevido.net, не может сгенерировать вывод, который вы описали (D1CD...
), так как этот код вообще не использует символ 1
(см. Его константу ValidChars
, которая использует очень нестандартная карта символов base32, и среди прочего не хватает 1
и 0
).
На самом деле, строка вывода, которую вы дали для C #, содержит только символы 0-9A-F
, что делает меня шестнадцатеричным.Продолжая, вывод Python hashlib.sha1('user@me.com').hexdigest().upper()
на самом деле является строкой, которую вы получили от C # ... D1CDF40BB39DB82315DD515A93CE160C3FB5FA2B
.
Так что проблема в том, что любой код, который вы используете в .Net, неделать кодирование base32 любого типа, но base16 / шестнадцатеричный.Вы захотите использовать hex под python или реальную реализацию base32 под .Net.
(Также, как и другие предлагали, вы должны использовать Encoding.UTF8.GetBytes
, иначе вы получите противоречивое поведение на разных компьютерах).