Как получить строку из 20 символов в SHA1(с++ и openssl)?

Добрый день.

В php есть функция SHA1, ее второй аргумент позволяет "укоротить" конечный хэш.
echo SHA1('Hello World', true).'</br>';
echo SHA1('Hello World');

В первой строке будет хэш в 20 символов, во второй строке в 40.
Как того же добиться на c++ используя openssl? Как перевести 40 шестнадцатеричных символов в 20 двоичных байт?
Сейчас есть такой код:
...
        unsigned char obuf[20];
        SHA1((const unsigned char *)st, strlen(st), obuf);
	char mdString[SHA_DIGEST_LENGTH*2+1];
	for(int i = 0; i < SHA_DIGEST_LENGTH; i++)
           sprintf(&mdString[i*2], "%02x", (unsigned int)obuf[i]);
...

Где st - это строка, которую необходимо закодировать.
  • Вопрос задан
  • 2868 просмотров
Пригласить эксперта
Ответы на вопрос 1
По моему параметр true говорит о том что будут возвращены 20 двоичных байт,
а false - о том, что будет возвращено 40 шестнадцатиричных символов.

Ни о каком укорачивании здесь речь не идет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы