首页 > 解决方案 > 如果我想在 C++ 中实现中间攻击,我应该使用什么数据结构?

问题描述

攻击包括为2-DES找到两个密钥。我知道明文和密文(都是十六进制),我必须找到密钥。密钥以字符串位表示,并且有 2^56 个可能的密钥,因为密钥的长度等于 56。对于每个密钥,我必须加密明文并配对(明文,密钥)。我应该记住密钥和明文的十六进制值。然后我必须使用每个可能的密钥(同样是 2^56)解密密文,并查看其中一个结果是否与一对(明文、密钥)中的一个相等。我知道我应该如何实现它,但我不知道如何存储如此大的值。

标签: c++c++11cryptographydes

解决方案


在 std::unordered_* 之前,我使用 std::map 为对象缓存保存大量对象,虽然有更快的随机访问容器,但它的扩展性足以满足我们的使用。较新的 unordered_map 具有 O(1) 访问时间,因此它是一个散列结构,应该为您提供近乎最佳的访问时间。


推荐阅读