C# AES:如何使用长度不是 128,192,256 位的密码加密数据?

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

我必须使用 AES 在 C# 中加密/解密数据。问题:密钥长度必须是128、192或256位。我希望用户可以输入长度为 6-256 个字符的任意密码。我读到这可以通过使用“填充”来实现,我将如何在我的代码中实现它:

        public static byte[] EncryptStringToBytes(string plainText, byte[] key)
        {
            byte[] cipherText;
            using var aes = new AesCryptoServiceProvider();

            aes.Key = key;
            aes.Mode = CipherMode.CBC;
            aes.Padding = PaddingMode.PKCS7;
            aes.GenerateIV();

            using (MemoryStream msEncrypt = new MemoryStream())
            {
                msEncrypt.Write(aes.IV, 0, aes.IV.Length);

                ICryptoTransform encoder = aes.CreateEncryptor();

                using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encoder, CryptoStreamMode.Write))
                using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
                {
                    swEncrypt.Write(plainText);
                }

                cipherText = msEncrypt.ToArray();
            }

            return cipherText;
        }```
c# encryption cryptography aes
2个回答
0
投票

我终于从以下问题中找到了一个我认为对安全性和可理解性都有好处的可行解决方案:在 C# 中加密和解密字符串?


-1
投票
  1. 选择一个密码(不仅仅是一个单词)。
  2. 通过 SHA-256 运行您的密码。有一些编辑器和网站可以为您执行此操作。
  3. 使用 256 位 SHA-256 哈希结果作为您的加密密码。
© www.soinside.com 2019 - 2024. All rights reserved.