【问题标题】:Storing the Initialization Vector - Separate field?存储初始化向量 - 单独的字段?
【发布时间】:2016-03-24 21:16:01
【问题描述】:

当使用 .NET AesCryptoServiceProvider 库加密敏感信息时,我会为每个加密的值生成一个唯一的初始化向量 (IV)。在我保存加密数据的数据库记录中,我有一个名为“IV”的字段,它存储初始化向量以供以后解密使用。

是否有其他方式可以将初始化向量与密文一起存储?也许通过将 IV 附加到密文?如果有,是否有标准方法?

【问题讨论】:

    标签: encryption aes initialization-vector aescryptoserviceprovider


    【解决方案1】:

    是否有其他方式可以将初始化向量与密文一起存储?也许通过将 IV 附加到密文?

    是的,您完全可以这样做。将其添加到密文中。

    如果有,是否有标准方法?

    不,没有标准common 方法是在 IV 前添加。如果您正在应用加密消息标准 (CMS),那么有一点关于 IV 的存储方式。 RFC3370

    【讨论】:

    • 谢谢!想知道用连字符 - 或其他“标准”字符分隔 IV 和密文是否很常见。
    • 从未见过。 IV 通常具有预定义的长度。对于 CBC 模式,它始终与块大小相同。对于 CFB 模式,它与段大小相同,对于 CTR 模式,它通常在 64 和 96 位之间。如果您允许可变大小的 CTR IV(技术上是随机数),那么您可以在 IV 前添加一个字节来表示 IV 的长度。
    • 在 PHP 领域,Laravel JSON 将 IV、密文和 MAC 分别编码(作为一个数组)。
    • @Scott 我见过它,但我觉得它很荒谬,因为整个密文必须存在 内存中才能正常工作。这个浪费很大。
    • 我没有说这是一个好的设计。 :) 我只是想分享人们做这样的事情。
    猜你喜欢
    • 2010-09-10
    • 1970-01-01
    • 1970-01-01
    • 2011-03-04
    • 2011-05-18
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 2012-10-20
    相关资源
    最近更新 更多