Всем привет, в библиотеки boost для C++ есть реализация шифрования SHA-1, которая кастует любой массив данных к const char * (то есть по сути к элементам по 1 байту) и уже эту последовательность байт шифрует. С ASCII сообщениями этот алгоритм работает отлично (онлайн кодеры выдают такой же результат), но вот с какой-нибудь другой кодировкой (например по 2 байта на символ) оно выдаёт отличный от онлайн кодера результат.
Причем я не передаю просто массив wchar'ов, где элементы по 2 байта, я делаю явный каст к const char *, а размер указываю как "кол-во символов" * "размер символа в байтах". Подскажите, правильно ли я делаю или нужна реализация алгоритма под UTF-8, и если второе, то не могли бы вы также подсказать либы для C++, где эта версия SHA-1 присутствует? Я уже перепробовал несколько других библиотек и они также не поддерживают UTF-8 (их ответ отличается от ответа онлайн кодеров).
P.S. на вики алгоритм описывает работу с битами, поэтому я больше склоняют к тому, что тут действительно нужно просто поддерживать инвариант работы алгоритма в boost (кодировка неважна), который требует просто массив байт и кол-во байт в массиве.
https://wandbox.org/permlink/TUI6UxabUyUZuPWR - вот такая примерно реализация, однако на этом wandbox'e ответ не сошелся с тем же кодом на моей локальной машине. Подскажите где я ошибаюсь!?