解密凯撒的Cypher麻烦

时间:2011-12-14 13:30:25

标签: encryption

我被困在这一段很长一段时间,我想知道是否有人可以帮助我。我怎样才能编写一个程序来计算C ++中加密的Caesar Cypher文件的移位值?我的任务是取每个小写字母并计算每个字母的使用次数,然后找出最常见的字符。我知道我可以用char和int的映射来做到这一点。但后来我不得不回到那封信,把它改成字母'e'。使用地图,无法搜索值。我认为唯一的方法是矢量矢量,但我不知道如何再次找到这些字母。有没有人知道更好的方法,或者我怎么能用矢量来完成这个?

2 个答案:

答案 0 :(得分:1)

你需要的是一个大小为26的向量(每个字符一个),其中A的索引为0,Z的索引为25。

浏览密文并在向量中增加指定字符索引的值。

当您浏览完所有密文后,请浏览向量并检查最高值。这可能是角色E。

现在你取索引并用4减去(E的索引)。

这会产生移位值。

假设20的计数最高,那么你的班次值是16。

答案 1 :(得分:1)

你可以这样。

  1. 首先在缓冲区中读取整个文件。
  2. 使用char键和int值创建地图。所有字母和值0
  3. 循环遍历整个缓冲区,直到每个字符的结尾递增值为1。同时保持max变量存储具有最大值的字符的密钥ha。

  4. 在循环结束时max变量将指向e。

  5. max中减去4将为您提供此密码的移位值。如果它是负数,那么你可以添加26.(如在模块26中的这个计算)