У меня есть код, который работает с .netstandard2.1 / netcore3.0 из-за этого конструктора класса BigInteger
. Этот ctor недоступен для netstandard2.0, и я хотел бы получить такую же функциональность, не применяя netstandard2.1.
Вот проблема:
- Конвертировать строка в UTF8 и ha sh это с использованием Sha256
- Преобразование массива байтов в BigInteger с использованием байтового порядка с прямым порядком байтов
Вот мое решение, которое работает с .netstandard2.1
static SHA256 sha256 = SHA256.Create();
internal static string GetEncoded(string value)
{
var data = sha256.ComputeHash(value.GetUTF8Bytes());
return new BigInteger(
value: data,
isUnsigned: true,
isBigEndian: true).ToString();
}
Это решение может быть в netstandard2.0, к сожалению, оно не дает того же результата.
internal static string GetEncoded(string value)
{
var data = sha256.ComputeHash(value.GetUTF8Bytes());
return new BigInteger(value: data).ToString();
}
Вот некоторые примеры значений и их ожидаемые закодированные выходы.
"encoded": "68086943237164982734333428280784300550565381723532936263016368251445461241953",
"raw": "101 Wilson Lane"
"encoded": "101327353979588246869873249766058188995681113722618593621043638294296500696424",
"raw": "SLC"
Из того, что я понимаю, BigInteger(byte[])
ctor ожидает байтовый массив с прямым порядком байтов. Несколько решений, которые я попробовал, не дали ожидаемых результатов, поэтому я обращаюсь к SO за ответами. Любая помощь будет принята с благодарностью.
Проблема с обновлением до net core