为什么我们通常在将 'key' 应用于任何加密算法之前对其进行哈希处理?
Why we generally hash the 'key' before applying it on any encryption algorithm?
我正在为 android 制作一个密码管理器应用程序,以便在需要时存储和检索密码。我想先加密我的密码,然后将其存储在我的数据库中。我看到一个教程,他首先对 'key' 进行哈希处理,然后将其应用于 AES 算法以加密密码。我无法理解他为什么要这样做。
我猜 "key" 是某种密码短语,只有密码管理器知道,它会加密所有密码 -- 密码已加密,因此以后可以解密并返回.
如果是这种情况,请不要对密钥进行哈希处理。最好从中 "derive" 一个加密密钥。例如,"key" 可能是 "snowfallsinthesummertime"。 HKDF 是密钥派生算法的一个示例,它可以采用此 "key" 并生成一个强加密密钥,然后将其与 AES 加密一起使用来加密密码。这是我可以解释你的问题 "hashing the key" 的唯一方法。
此外,在加密密码的同时,最好防止加密数据被篡改。做到这一点的一个好方法是选择 AES 加密的 GCM 模式,其中包括一个可以检测篡改的 "authentication tag"。
我正在为 android 制作一个密码管理器应用程序,以便在需要时存储和检索密码。我想先加密我的密码,然后将其存储在我的数据库中。我看到一个教程,他首先对 'key' 进行哈希处理,然后将其应用于 AES 算法以加密密码。我无法理解他为什么要这样做。
我猜 "key" 是某种密码短语,只有密码管理器知道,它会加密所有密码 -- 密码已加密,因此以后可以解密并返回.
如果是这种情况,请不要对密钥进行哈希处理。最好从中 "derive" 一个加密密钥。例如,"key" 可能是 "snowfallsinthesummertime"。 HKDF 是密钥派生算法的一个示例,它可以采用此 "key" 并生成一个强加密密钥,然后将其与 AES 加密一起使用来加密密码。这是我可以解释你的问题 "hashing the key" 的唯一方法。
此外,在加密密码的同时,最好防止加密数据被篡改。做到这一点的一个好方法是选择 AES 加密的 GCM 模式,其中包括一个可以检测篡改的 "authentication tag"。