有谁知道一种从任何长度的密码短语生成256位 key 值的方法吗?无法加密加密,因为需要再次生成加密值并在数据库中进行比较。因此,值每次加密时都必须生成相同的加密字符串。

目前,我正在使用32个字符的键处理可能不正确的假设,这是256位?

因此,我想将“棕色狐狸”转换为合适的AES 256位 key 吗?

最佳答案

您可以使用任意大小的密码来构造 Rfc2898DeriveBytes Class ,然后在这种情况下派出所需大小的 key ,即256位(32字节):

private static byte[] CreateKey(string password, int keyBytes = 32)
{
    const int Iterations = 300;
    var keyGenerator = new Rfc2898DeriveBytes(password, Salt, Iterations);
    return keyGenerator.GetBytes(keyBytes);
}

为了产生确定性的输出(即相同的输入将产生相同的输出),您将需要对盐进行硬编码。盐必须至少为8个字节:
private static readonly byte[] Salt =
    new byte[] { 10, 20, 30 , 40, 50, 60, 70, 80};

关于c# - 生成AES 256位 key 值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17195969/

10-08 22:49