0

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;
}

次の質問があります。

  1. 私の関数は常に「パスワードからのキー生成エラー」を出力しますが、エラーメッセージを出力すると、成功が出力されます。パスワードを生成するときにエラーが発生するのはなぜですか?

  2. の値が持つべきかどうかはわかりませんkeysize。そのパラメーターに何を入力する必要があるかを誰かが説明できますか?

  3. このコードを実行すると、行でセグメンテーション違反が発生しますgcry_kdf_derive。なぜそれが起こるのでしょうか?

ありがとう。

4

0 に答える 0