PBKDF2 を使用して、SHA-256 を使用してパスワードからキーを生成しています
int genKeyFromPass()
{
int i;
void *pwd, *salt = "someRandomSalt";
unsigned char keyBuffer[16];
size_t saltLen, keySize = 16;
gpg_error_t errStatus;
unsigned long iterations = 1024;
printf("Enter the password to generate key: ");
scanf("%s", pwd);
errStatus = gcry_kdf_derive(pwd, strlen(pwd), GCRY_KDF_PBKDF2, GCRY_MD_SHA512, salt, strlen(salt), iterations, keySize, keyBuffer);
if(errStatus != 0)
{
printf("Error generating key from password!\n");
printf("Error no: %d and message: %s\n ", errStatus, gcry_strerror(errno));
}
printf("Key: ");
printf("%s", keyBuffer);
return 0;
}
次の質問があります。
私の関数は常に「パスワードからのキー生成エラー」を出力しますが、エラーメッセージを出力すると、成功が出力されます。パスワードを生成するときにエラーが発生するのはなぜですか?
の値が持つべきかどうかはわかりません
keysize
。そのパラメーターに何を入力する必要があるかを誰かが説明できますか?このコードを実行すると、行でセグメンテーション違反が発生します
gcry_kdf_derive
。なぜそれが起こるのでしょうか?
ありがとう。