0

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

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.
4

1 回答 1

2

通常,在不知道密钥的情况下解密是不可能的。幸运的是,您的消息是用最简单的方法之一加密的……
凯撒密码加密的工作原理如下:
* 选择偏移量 K
* 对于消息中的每个字母,请执行
** 字母 = 字母 + K

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

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

于 2015-03-29T06:43:43.533 回答