【问题标题】:C# using already created AES keyC# 使用已创建的 AES 密钥
【发布时间】:2011-06-29 10:30:10
【问题描述】:

我有我想在 C# 中使用的预生成的 AES 密钥。谁能指出我正确的方向如何使用预生成的 AES 密钥和RijndaelManaged 对象。

编辑:我在byte[] 数组中有密钥,我需要加密Stream

我在网上找到了这些代码示例:

    private static byte[] Decrypt(byte[] key, byte[] PGPkey)
    {
        RijndaelManaged rDel = new RijndaelManaged();
        rDel.Key = key;
        //rDel.Mode = CipherMode.ECB; // http://msdn.microsoft.com/en-us/library/system.security.cryptography.ciphermode.aspx
        rDel.Padding = PaddingMode.PKCS7; // better lang support
        ICryptoTransform cTransform = rDel.CreateDecryptor();
        byte[] resultArray = cTransform.TransformFinalBlock(PGPkey, 0, PGPkey.Length);
        return resultArray;
    }

    private static byte[] Encrypt(byte[] key, byte[] PGPkey)
    {
         RijndaelManaged rDel = new RijndaelManaged();
         rDel.Key = key;
         //rDel.Mode = CipherMode.ECB; // http://msdn.microsoft.com/en-us/library/system.security.cryptography.ciphermode.aspx
         rDel.Padding = PaddingMode.PKCS7; // better lang support
         ICryptoTransform cTransform = rDel.CreateEncryptor();
         byte[] resultArray = cTransform.TransformFinalBlock(PGPkey, 0, PGPkey.Length);
         return resultArray;
     }

我没有收到任何错误,但解密后的字节数组与进行加密之前的不同。

编辑:我想我成功了,必须设置 rDel.Mode = CipherMode.ECB;

【问题讨论】:

  • 你有什么形式的密钥,你的预生成是什么意思?
  • @V4Vendetta,我在 byte[] 数组中有密钥。
  • 你需要完整性检查吗?
  • 不,我不需要完整性检查。
  • 不要使用欧洲央行。 CBC 更适合您的使用。您的问题很可能是由于未将 IV 与您的加密数据一起存储。

标签: c# security cryptography aes


【解决方案1】:

如果在设置为ECB模式时有效,那是因为它之前使用CBC模式,加密时使用随机生成的初始化向量。初始化向量随机化密文,因此两个相同的数据,用相同的密钥加密,不会产生相同的密文。您可以获取 byte[] RijndaelManagedInstance.IV 属性并将其与您的密文一起存储。然后在解密时,将相同的属性设置为用于加密的初始化向量,然后您应该在解密后收到相同的纯文本。

【讨论】:

    【解决方案2】:

    您需要将密钥作为byte[]。然后将其分配给Key 属性。

    使用自动生成的 IV 进行加密很好。但是您需要将其与加密数据一起存储并放入解密器中以再次解密您的数据。

    不要使用ECBCBC 更适合您使用。

    【讨论】:

    • 您的问题太模糊,无法告诉您如何处理 IV。您没有指定加密模式,也没有指定加密或解密。
    • 该更新没有多大帮助。但我强烈建议您搜索一个为您处理所有这些内容的高级加密库。
    猜你喜欢
    • 2017-09-05
    • 2016-06-11
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多