我正在开发一个简单的软件来进行 aes256-cbc 文件加密。该软件是在 GNU/Linux 上使用 libgcrypt-1.5.0 开发的。
我想将上述函数与GCRY_KDF_PBKDF2
asalgo
和SHA512
as subalgo 一起使用。
gcry_kdf_derive( const void *passphrase, size_t passphraselen, int algo, int subalgo,
const void *salt, size_t saltlen, unsigned long iterations,
size_t keysize, void *keybuffer )
此函数从 a 派生密钥passphrase
。keysize
以八位字节给出键的请求大小. keybuffer
是调用者提供的缓冲区,成功时使用派生密钥填充。输入密码短语取自passphrase
密码短语八位字节的任意内存缓冲区。algo
指定要使用的 KDF 算法;见下文。subalgo
指定 KDF 算法内部使用的算法;这通常是一种哈希算法,但某些 KDF 算法可能会以不同的方式使用它。salt
是一种长度为 saltlen 八位字节的盐,这是大多数 KDF 算法所需要的。iterations
是大多数 KDF 的正整数参数。
我不了解如何使用此功能的三件事:
salt
必须随机生成,因此必须将其未加密放入输出文件中,不是吗?(IV-密文-SALT-MAC)saltlen
有一个正确的“加密”值还是我可以选择我喜欢的任何东西?比如 10,20,30...- keysize(在这种情况下)必须是 512,对吧?