0

假设我有这个字符串文字(用作键),例如:

'h' 'i' 'i' 'a' 'm' 'a' 'c' 'a' 't'

它像这样(随机)传递到应用程序中:

't' 'i' 'h' 'a' 'i' 'a' 'm' 'c' 'a'

什么算法可以取消排序(在 for 循环中),然后尝试解密数据,然后检查已知偏移量处的值,如果为 false,则重新开始循环。

  • 请注意,这将在运行时与 256 位 AES 密钥一起使用。

问题:算法平均需要多长时间 - 考虑到它使用 AES 256 密钥?(时间不是问题,只是好奇)

谢谢大家。

重要编辑 - 不能使用 STD 函数或任何 CRT,因为我的应用程序不兼容。

4

2 回答 2

3

循环遍历具有n项的集合的所有排列的算法的复杂度为 O( n !)。将算法应用于包含 9 个项目的示例集意味着 9!= 362880 次迭代,这可能是可行的。

加密密钥是如何从 9 个字符的字符串中得出的?设计这个系统的人似乎对密码学了解不多。

至于置换迭代算法,请参见例如:Stepping all permutations one swap at time

于 2013-06-04T06:06:50.870 回答
2

如果您可以通过蛮力找出字符串,那么其他任何人都可以,因此开始加密毫无意义。

于 2013-06-04T07:22:33.880 回答