繁体   English   中英

使用AES-256 CBC加密文本文件

[英]Encrypting text file with AES-256 CBC

我一直在尝试自己的业余时间学习C ++和计算机安全性,并且一直在尝试一些CTF挑战。

挑战在于找到文本文件(x.txt)中的单词数(N),并使用N作为密钥使用AES-256 CBC加密文本文件(x.txt)并输出新的文本文件(y.txt)和加密的内容。

我从文本文件中获取单词数没有问题,但是我只是想知道是否有人知道如何执行所述的加密?

我一直在阅读有关OpenSSL的内容,但无法继续进行。 我假设在这种情况下IV将为零?

提前致谢。

我假设在这种情况下IV将为零?

IV或初始化向量是加密的“种子”。 需要这样做,以便相似的明文在加密时看起来不会相似。 它意味着永远不会在不同的加密运行之间重复,并且不是秘密。 零IV(或任何其他固定IV)将无法达到目的。

AES-CBC的一种典型方法是在加密期间生成随机IV并将其与密文一起存储。 然后在解密期间将其读入并用于初始化解密器。

要了解有关要使用的OpenSSL API的更多信息,请参阅《 OpenSSL Wiki-对称加密》

我目前也在学习AES。 以下是一些我认为有用的资源:

如何执行AES加密:

每回合可归结为4个步骤:

  1. 替代字节(使用S-box)
  2. 移行
  3. 混合列
  4. 添加回合密钥

Paar教授提供了一个非常好的视频,介绍如何执行每轮AES。 这是他的AES视频的链接 在学习加密方面,他的整个渠道确实是金矿。 注意:您将需要对S-box进行硬编码或以某种方式包含它。

帕尔教授在视频中没有解释的一件事是密钥扩展(也就是如何获取每个回合密钥)。 您可以在Wagner教授的页面上找到密钥扩展的Java实现 重构为C ++应该相对直接。 只要记住要包括圆形常量表即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM