SHA-1 (Secure Hash Algorithm, версия 1) - алгоритм криптографического хеширования, описанный в RFC 3174.
Если говорить простыми словами, то хеш - это цифровой отпечаток стандартизированной длины от входных данных любого размера.
Хеш SHA-1 имеет размер 160 бит, или 20 байт, или 40 шестнадцатеричных цифр. На сегодняшний день считается устаревшим и в серьёзной криптографии уже не используется, но для простых нужд его вполне хватает.
В платформе 1С 8.3 уже реализованы некоторые хеш-функции, в том числе и SHA-1. Но по непонятным причинам работает это только на сервере. (Разработчики платформы, сделайте наконец-таки хеши на клиенте!!!) В некоторых кейсах хеш нужно вычислять именно на клиенте, в связи с чем мной был реализован велосипед алгоритм с применением побитовых операций (доступно с версии 8.3.11). На данном портале уже есть похожие публикации, но всё равно выложу это со своим видением в 2К25-м )
Алгоритм был подсмотрен на wiki. Относительно простой, но нужно внимательно следить за битами )
Повторять википедию не буду, поэтому сразу к выводам.
На малых данных работает достаточно быстро для практического применения: скорость ~100 хешей в секунду для коротких строк входных данных размером 36 байт. Для больших бинарников, конечно, это не практично, т.к. хеш будет рассчитываться несколько секунд.
Корректность алгоритма протестирована на многочисленных данных в параллели со встроенным серверным SHA-1.
Протестировано на платформе 8.3.23, но будет работать на любой, начиная с 8.3.11. Независимо от БСП.
Для чего это понадобилось мне: для генерации одноразовых паролей для двухфакторной аутентификации (из прошлой моей публикации) на клиенте.
Код открыт, можете использовать в своих проектах.
Ещё больше разного в моём профиле или на гитхабе.