Я работаю над проектом, и у меня есть некоторые проблемы. Я искал, но не могу найти удовлетворенного ответа.Получение результата функции OPENSSL SHA1() в ARRAY
У меня огромный файл состоит из 0 и 1s. Я получаю 1024 (мой кусок) битов в массив, и после этого я применяю функцию SHA1(), которая реализована в библиотеке openssl/sha.h.
char chunk [1024]; в то время как ((fgets (фрагмент, 1024, FP))! = NULL)
Мое намерение состоит в том, что мой файл может состоять из одинаковых кусков, и я хочу, чтобы подсчитать, сколько кусков одинаковы.
После я получаю 1024 бит в моем массиве кусок я применить:
неподписанные символ obuf [20];
SHA1 (кусок, strlen (кусок), obuf); Функция для получения результата хэш-функции.
здесь, как работает функция SHA1
неподписанные символ * SHA1 (Const символ без знака * d, без знака длиной п, неподписанные символ * д);
после этого я хочу сохранить свою функцию хэш-функции в массиве. После того, как я прочитал весь свой файл, я буду использовать этот массив для сравнения, если есть такие же результаты хеширования или нет, таким образом я могу запустите мой проект. Но я застрял в этом вопросе. Я не могу поместить результат obuf в массив.
я попытался: memcopy() strcopy() или просто MyArray [N], [20] = obuf; и т. д.
Если вы предложите какой-то способ, я буду счастлив.
поэтому самая большая проблема заключается в том, что поиск количества хэшей уникален?
Я просто пытаюсь, это имеет смысл. Вы правы, эта строка будет читать не более 1023, но я могу изменить свою проблему, просто помещая ее в массив ... – berkay
Вам нужно будет использовать функцию 'memcmp (obuf [i], obuf [j], 20)' to сравните хеши. 'memcmp' вернет' 0', если два хэша равны. Я думаю, вам, возможно, понадобится освежить ваши основы C ... – caf
это не так просто, как вы думаете, потому что подумаем, что мои хэши [5,4,5,4,3,3,2,1,5,2 ] трудно реализовать функцию, используя memcmp.(beginner in c) – berkay