gpt4 book ai didi

使用C语言破解凯撒密码

转载 作者:行者123 更新时间:2023-11-30 21:39:06 25 4
gpt4 key购买 nike

我正在编写一个程序来使用 Cecer 密码算法解密文本。到目前为止,我的代码工作正常并获得所有可能的解密结果,但我必须仅显示正确的结果,我该怎么做?下面是获取所有解密字符串的代码。对于我的代码答案应该是“3 hello world”。

void main(void)
{
char input[] = "gourz#roohk";
for(int key = 1;x<26;key++)
{
printf("%i",input[I]-x%26);
for(int i = strlen(input)-1;i>=0;i--)
{
printf("%c",input[I]-x%26);
}
}
}

最佳答案

回想一下,凯撒密码只有 25 种可能的移位。此外,对于长度较长的文本,很有可能只有一次转换才能使输入有意义。那么,一种可能的方法是看看转变的结果是否有意义;如果确实如此,那么这可能是正确的转变(例如,将单词与字典进行比较,看看它们是否是“真实”的单词;不确定您是否已经完成了网络服务,但有 free dictionary APIs 可用)。

考虑以下文本:3 uryyb jbeyq。一些可能的变化:

  • 3 gdkkn vnqkc (12)
  • 3 xubbe mehbt (3)
  • 3 Hello World (13)
  • 3 jgnnq yqtnf (15)
  • 等等

如您所见,只有 13 的移位才能使该文本包含“真实”单词,因此正确的移位可能是 13。

另一种可能的解决方案(尽管更复杂)是通过 frequency analysis (即查看生成的文本是否具有与英语相同或相似的统计特征)。例如,在英语中,最常见的字母是“e”,因此正确的类次可能会将“e”作为最常见的字母。举例来说,该答案的第一段包含 48 个字母“e”,但如果将其移动 15 个字母,则只有 8 个:

Gtrpaa iwpi p Rpthpg Rxewtg wph dcan 25 edhhxqat hwxuih. Pahd, udg itmi du cdc-igxkxpa atcviw, xi'h wxvwan axztan iwpi dcan dct hwxui lxaa bpzt iwt xceji bpzt htcht. Dct edhhxqat peegdprw, iwtc, xh id htt xu iwt gthjai du iwt hwxui bpzth htcht; xu xi sdth, iwtc xi'h egdqpqan iwt rdggtri hwxui (t.v. rdbepgt ldgsh pvpxchi p sxrixdcpgn id htt xu iwtn'gt "gtpa" ldgsh; cdi hjgt xu ndj'kt sdct ltq htgkxrth nti, qji iwtgt pgt ugtt sxrixdcpgn PEXh pkpxapqat).

这里的关键词是“可能”——它在统计上根本不具有确定性(尤其是对于较短的文本),并且可以编写在某种程度上抵抗该技术的文本(例如通过故意的拼写错误, lipograms 等)。 )。请注意,我实际上有一个上面的异常示例 - “3 xubbe mehbt”比“3 hello world”有更多的字母“e”实例,即使第二个显然是正确的转变 - 所以你可能想要应用几个统计测试可增强您的信心(尤其是对于较短的文本)。

关于使用C语言破解凯撒密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40536345/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com