【问题标题】:Do encryption algorithms require an internal hashing algorithm?加密算法是否需要内部散列算法?
【发布时间】:2011-02-21 15:34:44
【问题描述】:

当我使用 C# 实现 AES 对称加密密码时,我注意到:

PasswordDeriveBytes derivedPassword = new PasswordDeriveBytes(password, saltBytesArray, hashAlgorithmName, numPasswordIterations);

为什么我需要使用散列算法进行 AES 加密?他们不是分开的吗?还是散列算法仅用于创建安全密钥?

AES 算法内部不使用哈希算法吗?

【问题讨论】:

    标签: c# encryption cryptography hash aes


    【解决方案1】:

    PasswordDeriveBytes 不是 AES 的一部分。它实现了一种算法来从密码中派生加密密钥。该算法涉及到哈希算法的使用。

    【讨论】:

      【解决方案2】:

      PasswordDeriveBytes 用于派生对称密钥以及您将用于加密/解密的 IV。 PasswordDeriveBytes 将采用密码(在您的情况下为密码),附加盐(在您的情况下为 saltBytesArray)并对其进行哈希处理(使用您提供的算法,例如 SHA 或 MD5)“n”次(在您的情况下为 numPasswordIterations)并给出你是resulatant字节数组。

      此方法仅用于导出密钥,与加密解密无关。

      【讨论】:

        猜你喜欢
        • 2015-03-14
        • 2011-10-05
        • 2012-08-09
        • 2013-01-09
        • 1970-01-01
        • 2021-08-25
        • 2016-11-03
        • 2016-10-21
        • 1970-01-01
        相关资源
        最近更新 更多