如何使用用户密码进行aes加密?

San*_*war 0 c security encryption cryptography ecryptfs

当ecryptfs等软件使用AES时,它会要求输入用户密码(例如"password123").

AES算法本身不需要用户密码.那么"password123"在哪里被投入数学?

我正在努力创建一个使用密码加密某些数据的C函数.我知道使用OpenSSL和aes密钥执行此操作的典型方法,但我不知道如何集成用户密码.

bar*_*njs 6

您需要使用密钥派生函数(KDF).基于密码的密钥派生功能2(PBKDF2)是当前最常用的方法.

OpenSSL可能暴露了PBKDF2,它通常需要输入密码和迭代次数(现代系统应该使用100000或更高的数字......加上数字直到大约需要0.3秒)和输出长度.它也可能需要一个哈希函数,SHA-2系列中的东西(SHA256,SHA384,SHA512)将是一个很好的现代选择.