为什么不能将AES用作哈希算法的一部分?

问题描述 投票:0回答:1

可以将AES用作哈希算法的一部分。输入数据是否用作键。下面是一个可能的示例。这可行并且安全吗?

static byte[] AesOneWayEncrypt(byte[] input)
    {
        using (Aes aes = Aes.Create())
        {
            aes.Key = keccak.ComputeBytes(input).GetBytes();
            Array.Copy(keccak.ComputeBytes(aes.Key).GetBytes(), aes.IV, 16);

            ICryptoTransform encryptor = aes.CreateEncryptor();

            using (MemoryStream ms = new MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(ms, encryptor, CryptoStreamMode.Write))
                {
                    cs.Write(data);
                }
                encryptedData.AddRange(ms.ToArray());
            }

        }
    }
encryption hash cryptography
1个回答
0
投票

有可能,但这是性能和安全性的折衷。好的散列函数的要求与好的加密算法的要求不同。例如,在这里阅读:https://en.wikipedia.org/wiki/Cryptographic_hash_function#Hash_functions_based_on_block_ciphers

© www.soinside.com 2019 - 2024. All rights reserved.