【问题标题】:SymmetricAlgorithm Key and initialization vector (IV) implementationSymmetricAlgorithm Key和初始化向量(IV)实现
【发布时间】:2016-05-19 18:09:48
【问题描述】:

我有一个网站,它采用 userId 并使用 RijndaelManaged 提供程序对其进行加密。

在对这些数据进行加密后,它会被放入一个队列中。据我了解,每个数据都应该使用不同的 IV 值加密,并且可以公开。

要解密使用 SymmetricAlgorithm 类之一加密的数据,您必须将 Key 属性和 IV 属性设置为用于加密的相同值。要使对称算法有用,密钥必须只有发送者和接收者知道。

此外,还有一个 Windows 服务从此队列中读取数据并尝试解密数据。但是由于队列中的每个值都使用不同的 IV 加密,Windows 服务如何知道要使用哪个 IV?

我应该将它与加密数据一起存储吗?

MRibePnbXiN578TUAZcITw== - MyIVValueIsHere

或者是否需要采取已知的方法?

【问题讨论】:

    标签: c# encryption rijndael rijndaelmanaged


    【解决方案1】:

    是的,如果您使用 AES-CBC,这正是您应该做的。您应该为每条消息随机生成 IV(使用加密安全的随机生成器,例如 RNGCryptoServiceProvider)。然后将 IV 与加密消息一起发送。

    考虑使用 AESCryptoServiceProvider,因为 AES 是一种标准。 AES 与 Rijndael 相同,但具有一些固定的标准化参数。

    【讨论】:

    • 感谢您的澄清,我也会考虑您对 AESCryptoServiceProvider 的建议。
    【解决方案2】:

    通常的做法是在加密数据前添加 IV,以便解密。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-18
      • 1970-01-01
      • 2011-06-04
      • 2016-12-20
      相关资源
      最近更新 更多