c - 在 C Caesar Cipher 中使用 ASCII 解密具有未知 key 的打开的文本文件

标签 c caesar-cipher

所以我想知道如何使用 ASCII 和未知 key 解密通过命令行参数打开的加密文本文件,然后使用答案 key 将其全部打印出来。我似乎已经能够实际打印出加密消息,但不知道如何确定如何找到 key 并将其打印出来。

int main( int argc, char *argv[]) {
  FILE *fp = stdin;  // defaults
  int  n = 13;
  int shift;
  // process command line
  switch (argc) {
    default:
      fp = fopen(argv[1], "r"); // should check for problems
      n  = atoi(argv[2]);
      break;
  }
  // rotate text
  int c, key;
  int i;
  while( (c = fgetc(fp)) != EOF) {
  // This is where I have managed to make C an integer 
  // and print out the encrypted message using the printf function.

最佳答案

通常,不知道 key 是不可能解密的。幸运的是,您的消息已使用最简单的方法之一加密...
凯撒密码加密的工作原理如下:
* 选择偏移量 K
* 对消息中的每个字母做
** 字母 = 字母+K

因此,如果我们想破解该代码,我们可以遍历 K (255) 的所有可能值,并排除生成非字母或数字的 ASCII 代码的所有可能性(假设原始消息是纯英语) .

您可能仍需要一些用户交互来决定是否有多个选项,但选项将是有限的。

关于c - 在 C Caesar Cipher 中使用 ASCII 解密具有未知 key 的打开的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29326030/

相关文章:

C 语言中数字的凯撒密码

java - 有错误的密码凯撒java程序

Java 到 C 的交叉编译

c - 用指针构建一个 strend 函数

c - (数据类型*)0是什么意思

c - strncpy的实现

c - 我的程序在调试时运行正确,但在调试结束时运行不正确

linux - 为什么这段代码不会置换值 Z?

凯撒密码不适用于空格

JavaScript - 凯撒密码