Например, я видел такой файл:
char data[] = "Hello, world!";
size_t length = sizeof(data);
unsigned char hash[SHA_DIGEST_LENGTH];
SHA1(data, length, hash);
Затем я нашел экземпляр почти такой же. Однако разница составляет SHA1(data, length - 1, hash);
Итак, я немного смущен. Должен ли я использовать "sizeof(data)"
или "sizeof(data)-1"
? Заранее спасибо.
Это зависит от фактической полезной нагрузки, которую вы хотите использовать.
sizeof data
включает нулевой терминатор.sizeof(data) -1
или strlen(data)
исключают нуль.SHA1
принимает длину байта, ей все равно, c-строка или нет. Таким образом, параметр действительно означает, сколько байтов нужно хэшировать. Обратите внимание, что sizeof (data) в вашем примере дает 14, тогда как есть 13 видимых символов.