生成密码的错误

时间:2014-01-22 22:49:45

标签: c gcc segmentation-fault libgcrypt

我正在使用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 个答案:

没有答案