【发布时间】:2018-11-05 15:24:49
【问题描述】:
我为 128、192 和 256 位密钥实现了 AES 密码。我正在尝试实现块密码操作模式,目前正在实现密码块链接模式。
关于CBC模式的实现,我有两个问题:
1.这是关于向密码例程提供数据,我在cbc()\\this function implements cbc mode 中调用密码例程。我的问题是我应该在cbc() 中读取文件(包含用于加密的数据),还是可以在cbc() 之外读取文件并将数据块作为协议传递给cbc()。哪一个是安全的实现。
2。 CBC 模式需要一个随机生成的初始化向量 aka IV(为此我在 c++11 中使用随机字节生成器),因为用户只在加密/解密时输入密钥我怎么知道使用的初始化向量是什么当文件被加密时。另外,如果我需要将 IV 提供给用户,该怎么做?
我在 C++11 中实现这些。
谢谢。
【问题讨论】:
-
请澄清您的第一个问题。至于第二个问题,请参阅我们姊妹网站 Cryptography Stack Exchange 上的 this question 和标记为 initialization-vector 的其他问题。另请注意,you should probably use an authenticated encryption mode 而不是 CBC。
-
@IlmariKaronen 请再次查看帖子我已经编辑并澄清了第一个问题。
-
@IlmariKaronen 你提到的第二个问题的链接,它回答了我的问题,但我怀疑我可以在加密文件中包含 IV 并在解密时提取它吗?
-
“我怀疑是否可以将 IV 包含在加密文件中并在解密时提取它。”你有什么疑问?这是通过 IV 的标准方法。
-
@RobNapier,其实我不知道,谢谢
标签: c++11 encryption aes cbc-mode