2016-11-04 49 views
0

当ecryptfs等软件使用AES时,会要求输入用户密码(如“password123”)。如何使用用户密码进行aes加密?

AES算法本身不会调用用户密码。那么“password123”会被扔进数学计算器?

我正在努力使用密码来加密一些数据的C函数。我知道使用OpenSSL和aes密钥的典型方式,但我不知道如何获得集成的用户密码。

+0

我有一些使用SNMPv3的经验,他们的RFC建议了一种派生密钥的方法。它需要密码,引擎ID,将它们混合在一起,混合起来,最后得到钥匙。看看A.2.1和A.2.2节。所示的例子是针对MD5的,但是相同的概念适用于AES:https://tools.ietf.org/html/rfc3414#section-2.6 – yano

+3

AES是一种对称密码算法,不使用任何密钥对;它使用一个密钥或128,192或256位,作为@bartonjs的答案可以从密码派生。像RSA和ECIES这样的非对称密码使用密钥对(即使将它们视为“锁和密钥”通常也会引起误解)。 –

+0

@ dave_thompson_085我对这个评论太无知了。我不知道AES和RSA有什么区别。我完成了这个项目的问题,我意识到我的方式错误大声笑 –

回答

6

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

OpenSSL可能暴露PBKDF2,它通常需要一个密码和一个迭代计数(现代系统应该使用类似100000或更高的东西......启动数字直到大约需要0.3秒)和一个输出长度。它也可能需要散列函数,SHA-2系列(SHA256,SHA384,SHA512)中的某些内容将是一个很好的现代选择。