You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

C语言实现凯撒密码破解程序的技术需求问询

C语言实现凯撒密码破解程序的技术需求问询

嘿,我现在要做一个C语言程序来破解用凯撒密码加密的文本,具体的需求和背景如下:

密码背景

我们截获了一个恐怖组织的消息,他们用的是凯撒密码——就是把每个英文字母在字母表上移动K个位置来替换原字母。举个例子,如果偏移量是2(相当于字母表整体前移2位),字母对应关系是这样的:

原字母:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
加密后:C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
(大小写字母都要处理,非字母字符不用管)

破解规则要求

凯撒密码的破解逻辑很明确,必须按下面的步骤来:

  • 尝试所有可能的偏移量(0到25,毕竟字母表一共26个字母)
  • 对每个偏移量解密后的文本,统计每个字母的实际出现频率Oi
  • 把这个实际频率和英文里每个字母的预期频率Ei对比,用公式 (Ei - Oi)² / Ei 计算该偏移量下的总误差
  • 总误差最小的那个偏移量就是正确的解密偏移量

程序功能要求

  • 输入:读取一行最多10^4个字符的文本
  • 处理:只转换大小写英文字母,非字母字符保持原样输出
  • 输出:最终确定的偏移量,以及对应的解密文本

另外,需要用到英文字母的预期频率表(标准的英文频率数据就行,比如E的频率最高,大概12.7%这类),有没有大佬能帮忙梳理下实现思路,或者给出对应的代码示例?

备注:内容来源于stack exchange,提问作者Birdy

火山引擎 最新活动