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

How to do an aes encryption WITH a user password?

ecryptfs等软件使用AES时,会询问用户密码(如"password123")。

AES 算法本身不需要用户密码。那么 "password123" 是从哪里算出来的呢?

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

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

OpenSSL 可能会公开 PBKDF2,它通常需要一个密码和一个迭代计数(现代系统应该使用类似 100000 或更高的数字……增加数字直到大约需要 0.3 秒),以及一个输出长度。它还可能采用散列函数,SHA-2 系列(SHA256、SHA384、SHA512)中的某些函数将是一个不错的现代选择。