Что такое эквивалент шестнадцатеричного дайджеста С# в Python 3.2?

В настоящее время я работаю над проектом по преобразованию программы Python 3.2 в C#.

В программе python есть строка кода, которая возвращает строковый объект двойной длины, содержащий только шестнадцатеричные цифры.

Фрагмент кода в программе Python:

if sha1.hexdigest().upper() == hash_string:
    #do whatever

Я пытался и не смог найти эквивалент hexdigest в С# из хэш-библиотеки в python.

В C# у меня уже есть хеш SHA1 в массиве байтов, но все методы, которые я пытался выполнить, эквивалентные шестнадцатеричному дайджесту, не смогли обеспечить совпадение с хэш_строкой - это то, что шестнадцатеричный дайджест sha1 должен совпадают.

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

Метод, который я сейчас использую вместо hexdigest:

string hexaHash = "";
foreach (byte b in sha1result)
{
    hexaHash += String.Format("{0:x2}", b);
}
string result = hexaHash;

РЕДАКТИРОВАТЬ: facepalm хорошо, я только что понял, в чем была моя проблема. При генерации хэша sha1 в питоне он делал это из шестнадцатеричной строки нижнего регистра. В моем С# это была шестнадцатеричная строка в верхнем регистре. Поэтому я предполагаю, что эквивалент hexdigest, который я использую, в порядке. Извините за потраченное время людей.


person GeorgePotter    schedule 05.04.2012    source источник
comment
Всегда при сравнении строк, поступающих из внешних систем, убедитесь, что обе они написаны ЗАГЛАВНЫМИ БУКВАМИ, поскольку в конечном итоге регистр может быть изменен во внешней системе, и код не будет работать, поэтому всегда делайте localValue.ToUpper() == externalValue.ToUpper()   -  person sll    schedule 05.04.2012
comment
Дублирование — stackoverflow.com/questions/3899644/convert-python -до-диез   -  person Micah Armantrout    schedule 05.04.2012


Ответы (1)


Используйте класс HMACSHA1 для его преобразования.

person Jonas    schedule 14.04.2012