#c #cryptography
#c #криптография
Вопрос:
Я работал над реализациями криптографии в C. От меня требуется использовать хэш сообщения с использованием любой из популярных хэш-функций, таких как SHA, MD5 и т.д.
В Java есть библиотека безопасности, которая заботится об этих вещах.
Но как мне сделать то же самое в C?
например: char * str = «это сообщение»; char * hash = SHA(str);
Что-то в этом роде. Было бы очень полезно, если бы кто-нибудь мог указать мне на какую-нибудь библиотеку, в которой уже реализованы эти функции, которые я могу вызвать для своей программы.
Спасибо!
Комментарии:
1. Должно ли это быть сделано в
C
, а неC
нет?2. Привели ли вас поиски к каким-либо соответствующим библиотекам, которые можно было бы использовать в качестве примеров и / или указать на предыдущие исследования?
3. Я опубликовал вопрос после его поиска в Google. Мне не удалось найти какое-либо «стандартное» решение моей проблемы. Думал, что Stackoverflow предоставит мне множество простых и стандартных опций! Надеюсь, я не использую сайт. @Andy: Это на C.
4. Какая операционная система? Если это Unix или что-то подобное Unix, вероятно, в нем уже установлен OpenSSL. Попробуйте
man 3 md5
Ответ №1:
sphlib — это библиотека с открытым исходным кодом, которая предоставляет оптимизированные (но переносимые) реализации на C многих хеш-функций.
OpenSSL — это более универсальная криптографическая библиотека, которая широко развернута и также предоставляет реализации хэш-функций (меньше хэш-функций, чем sphlib, но она также включает другие криптографические примитивы).
Ответ №2:
OpenSSL действительно широко доступен. Для вашего примера вы могли бы использовать
unsigned char digest[SHA_DIGEST_LENGTH];
char *str = "this is a string";
SHA1(str, strlen(str), digest);