c++ - 如果我想在 C++ 中实现中间攻击,我应该使用什么数据结构?
问题描述
攻击包括为2-DES找到两个密钥。我知道明文和密文(都是十六进制),我必须找到密钥。密钥以字符串位表示,并且有 2^56 个可能的密钥,因为密钥的长度等于 56。对于每个密钥,我必须加密明文并配对(明文,密钥)。我应该记住密钥和明文的十六进制值。然后我必须使用每个可能的密钥(同样是 2^56)解密密文,并查看其中一个结果是否与一对(明文、密钥)中的一个相等。我知道我应该如何实现它,但我不知道如何存储如此大的值。
解决方案
在 std::unordered_* 之前,我使用 std::map 为对象缓存保存大量对象,虽然有更快的随机访问容器,但它的扩展性足以满足我们的使用。较新的 unordered_map 具有 O(1) 访问时间,因此它是一个散列结构,应该为您提供近乎最佳的访问时间。
推荐阅读
- json - 将最终转换为列表
扑 - php - 从 PHP 下载 excel 文件
- angular - Angular 从 Observable 获取特定值
- javascript - 引导表单:如何正确处理分配给“更改”验证的输入的“无效”类?轮廓颜色与“无效反馈”不匹配
- maven - 我可以使用 Maven 生成一个可以使用不同的 testng xml 运行不同的 Selenium TestNG 测试的 Jar
- javascript - 如何根据变量显示不同的图像?
- java - ClassNotFoundException:项目编译后抛出/org/jdom2/JDOMException
- r - 将具有不同字符大小的列表转换为数据框
- python - 如何修复 Web2Py ”
(外键约束失败)”? - jquery - 使用函数onselect时JQuery Air DatePicker为空