Подскажите почему неправильно генерируется ключ утилитой openssl
Написал утилитку на С, для генерации ключа, посредством пароля и соли, пробую, получаю одни данные, пробую тот же самый как мне кажется алгоритм, для генерации родной утилиткой openssl и получаю совсем другие данные, как только не пробовал, я не могу получить тот же ключ, который нужен, и не могу понять, что я делаю не так.
Вот код на Си:
int i, nrounds = 5;
unsigned char key[32], iv[32];
unsigned char salt[] = { 0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88};
unsigned char encryptKey[] = "ThisIsKey";
i = EVP_BytesToKey(EVP_aes_256_cbc(), EVP_sha1(), salt, encryptKey, strlen((const char *)encryptKey), nrounds, key, iv);
if (i != 32) {
printf("Key size is %d bits - should be 256 bits\n", i);
return -1;
}
printf("[+] Salt => ");
for (int i = 0;i < 8;i++) {
printf("%02X", salt[i]);
}
printf("\n[+] KEY => ");
for (int i = 0;i <= 32;i++) {
printf("%02X", key[i]);
}
printf("\n[+] IV => ");
for (int i = 0;i <= EVP_MAX_IV_LENGTH;i++) {
printf("%02X", iv[i]);
}
printf("\n");
Получаю:
[+] Salt => 1122334455667788
[+] KEY => F3A2F8BE2C1E943FC8FF403D42D9D9F4D38300032D24CBDE964DBC5FAED4966524
[+] IV => 2492C4DFC355EEC2F960B439C658B64188
А вот так пытаюсь в консоли:
openssl aes-256-cbc -pass pass:ThisIsKey -S 1122334455667788 -P -md sha1 -iter 5
salt=1122334455667788
key=56216ECD63F164A4C23C425EB415534AB17F29BAC799C1346B4B88E31951C5DA
iv =80AFEF375648F9EEBB2AE82B802F15CE
Источник: Stack Overflow на русском