C# Ха sh строка в короткий номер - PullRequest
0 голосов
/ 02 апреля 2020

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

Я хочу иметь sh произвольную длинную строку (например, 5000 символов) в небольшое число, например, 6 цифр.

Этот ha sh должен быть детерминирован c, и не должно иметь значения, на какой архитектуре или системе он запущен (это сложная часть).

1 Ответ

3 голосов
/ 02 апреля 2020

Вы можете использовать стандартную функцию ha sh, например, SHA256:

    string str = "the quick brown fox jumps over the lazy dog";
    byte[] encoded = SHA256.Create().ComputeHash(Encoding.UTF8.GetBytes(str));
    var value = BitConverter.ToUInt32(encoded, 0) % 1000000;

Это определено c, не зависит от платформы (поскольку SHA256 стандартизирован), может использовать ввод произвольной длины, и предоставляет «очень» уникальный номер для любой строки (т. е. очень маловероятно, что вы найдете другую строку с тем же номером, но это зависит от количества используемых битов вывода).

...