为什么我们通常在将"密钥"应用于任何加密算法之前对其进行哈希处理?



我正在为Android制作一个密码管理器应用程序,以便在需要时存储和检索密码。我想先加密我的密码,然后将其存储在我的数据库中。我看过一个教程,他首先对"密钥"进行哈希处理,然后将其应用于AES算法以加密密码。我不明白他为什么这样做。

我猜"密钥"是某种密码短语,只有密码管理器知道,并且加密所有密码 - 密码被加密,以便以后可以解密并返回。

如果是这种情况,请不要对密钥进行哈希处理。最好从中"派生"一个加密密钥。例如,"关键"可能是"降雪夏令"。HKDF是密钥派生算法的一个例子,它可以获取此"密钥"并生成强大的加密密钥,然后将其与AES加密一起使用以加密密码。这是我解释你问题的"散列键"的唯一方法。

此外,除了加密密码外,最好防止篡改加密数据。一个好方法是选择AES加密的GCM模式,其中包括一个"身份验证标签",可以检测篡改。

最新更新