Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用AES-256 CBC加密文本文件 我一直在尝试在我空闲的时候拿起C++和计算机安全,我一直在尝试一些CTF挑战。_C++_Security_Encryption_Aes - Fatal编程技术网

用AES-256 CBC加密文本文件 我一直在尝试在我空闲的时候拿起C++和计算机安全,我一直在尝试一些CTF挑战。

用AES-256 CBC加密文本文件 我一直在尝试在我空闲的时候拿起C++和计算机安全,我一直在尝试一些CTF挑战。,c++,security,encryption,aes,C++,Security,Encryption,Aes,挑战在于找出文本文件(x.txt)中的字数(N),并使用N作为密钥使用AES-256 CBC对文本文件(x.txt)进行加密,然后输出一个包含加密内容的新文本文件(y.txt) 我从文本文件中获取字数没有问题,但我只是想知道是否有人知道如何执行所述的加密 我一直在阅读有关OpenSSL的文章,但我不能再继续下去了。我想在这种情况下静脉注射是零 提前谢谢 我想在这种情况下静脉注射是零 IV或是加密的“种子”。这是必要的,这样相似的明文在加密时看起来就不相似了。它意味着在不同的加密运行之间永远不会重

挑战在于找出文本文件(x.txt)中的字数(N),并使用N作为密钥使用AES-256 CBC对文本文件(x.txt)进行加密,然后输出一个包含加密内容的新文本文件(y.txt)

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

我一直在阅读有关OpenSSL的文章,但我不能再继续下去了。我想在这种情况下静脉注射是零

提前谢谢

我想在这种情况下静脉注射是零

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

AES-CBC的典型方法是在加密过程中生成随机IV,并将其与密文一起存储。然后在解密过程中读入它并使用它初始化解密程序


要了解有关要使用的OpenSSL API的更多信息,请参阅。

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

如何执行AES加密:

每轮可归结为4个步骤:

  • 替换字节(使用S盒)
  • 换行
  • 搅拌柱子
  • 添加圆键
  • Paar教授有一个关于如何执行每一轮AES的非常好的视频。在学习密码方面,他的整个渠道真是一座金矿。注意:您需要硬编码S-box或以某种方式包含它


    Paar教授在视频中没有解释的一件事是键扩展(也称为如何获得每个圆键)。你可以找到一个java实现的密钥扩展,应该相对简单地重新编译成C++。请记住包含圆形常量表。

    “我已经阅读了OpenSSL的相关内容,但我无法继续”人们可能需要更多的细节来了解你到底遇到了什么问题。我发现的大部分信息是关于命令行加密的,但是我没有找到任何关于如何在C++程序中实现它的教程。通常,IV是密文的前缀。由于IV大小是固定的,因此很容易从一开始就提取,而无需任何分隔符。