1 00:00:00,000 --> 00:00:11,980 2 00:00:11,980 --> 00:00:16,980 >> 罗伯:嗨,我是罗布,让我们破译 在的V @ genere程序。 3 00:00:16,980 --> 00:00:21,180 我们必须这样做的第一件事就是让 确保用户输入的内容,我们预计 4 00:00:21,180 --> 00:00:23,240 他们在命令行。 5 00:00:23,240 --> 00:00:28,720 因此,如果的argc不为2,这意味着要么 用户没有输入字符串我们 6 00:00:28,720 --> 00:00:31,780 要使用作为我们的加密 串,或者它们 7 00:00:31,780 --> 00:00:32,890 输入了太多的东西。 8 00:00:32,890 --> 00:00:35,130 我们不知道该怎么办 与其他的东西。 9 00:00:35,130 --> 00:00:37,960 >> 因此,我们告诉他们什么,他们 应该已经进入。 10 00:00:37,960 --> 00:00:39,300 我们回来。 11 00:00:39,300 --> 00:00:44,570 现在,假设的argc是2,我们可以 继续与程序的其余部分。 12 00:00:44,570 --> 00:00:47,890 >> 我们别名的argv的名称[1] 13 00:00:47,890 --> 00:00:49,750 入变量的关键字。 14 00:00:49,750 --> 00:00:51,860 这样我们就不必 使用名称的argv [1] 15 00:00:51,860 --> 00:00:53,050 整个程序的其余部分。 16 00:00:53,050 --> 00:00:55,570 也许大家会忘记什么 这意味着等。 17 00:00:55,570 --> 00:00:57,830 关键字是一个好得多的名字。 18 00:00:57,830 --> 00:01:01,982 我们会立即抓住长度 在这里我们的关键字。 19 00:01:01,982 --> 00:01:07,460 >> 好了,现在我们要检查 我们的关键字实际上是有效的。 20 00:01:07,460 --> 00:01:11,250 我们使用加密字符串的关键字 应该仅仅是按字母顺序排列 21 00:01:11,250 --> 00:01:12,400 字符。 22 00:01:12,400 --> 00:01:16,830 如果用户输入的非字母 字符,应该说,关键字 23 00:01:16,830 --> 00:01:20,170 必须只包含A到 Z和然后返回。 24 00:01:20,170 --> 00:01:24,370 所以这个for循环遍历所有 我们的关键字的字符,检查 25 00:01:24,370 --> 00:01:31,870 如果一个人是不是按字母顺序排列,然后 我们需要打印的警告。 26 00:01:31,870 --> 00:01:36,285 >> 现在,一旦我们到了这一点,我们知道 该字符串必须是正确的。 27 00:01:36,285 --> 00:01:38,230 关键字必须是正确的。 28 00:01:38,230 --> 00:01:40,880 现在我们需要从得到的消息 他们希望我们的用户 29 00:01:40,880 --> 00:01:43,910 加密与关键短语。 30 00:01:43,910 --> 00:01:46,780 因此,为了得到这一点,我们有一个 做while循环,那将 31 00:01:46,780 --> 00:01:52,650 不断地得到一个字符串从用户 直到他们进入一个有效的字符串。 32 00:01:52,650 --> 00:01:58,690 >> 继续,我们在这里看到这个变量, 整型nun_letters_seen。 33 00:01:58,690 --> 00:02:01,300 我们就会明白为什么我们需要 即在一秒钟。 34 00:02:01,300 --> 00:02:07,320 但这种循环会遍历 从i等于0一路攀升到我 35 00:02:07,320 --> 00:02:10,940 等于n,它意味着我们遍历 在所有可能的 36 00:02:10,940 --> 00:02:13,020 人物在我们的信息。 37 00:02:13,020 --> 00:02:17,370 因为我们要加密所有的 在我们的信息的字符。 38 00:02:17,370 --> 00:02:22,970 所以请注意我们做,如果(isalphamessage [I], 因为我们不希望加密 39 00:02:22,970 --> 00:02:25,660 字符不是按字母顺序排列。 40 00:02:25,660 --> 00:02:28,810 如果有符号,空格 或数字,我们不 41 00:02:28,810 --> 00:02:30,730 要加密的。 42 00:02:30,730 --> 00:02:37,220 >> 现在,假设它是按字母顺序排列, 我们首先要弄清楚我们 43 00:02:37,220 --> 00:02:40,890 其实要加密 使用消息。 44 00:02:40,890 --> 00:02:42,710 那么我的意思了吗? 45 00:02:42,710 --> 00:02:46,740 >> 让我们假设的关键短语 输入的用户是ABC。 46 00:02:46,740 --> 00:02:49,070 我们使用什么加密的。 47 00:02:49,070 --> 00:02:54,850 现在,天真,我们认为这意味着 我们要的第一个字符进行加密 48 00:02:54,850 --> 00:02:59,740 我们的信息由0,因为手段 由0旋转的字符。 49 00:02:59,740 --> 00:03:04,395 >> 我们希望第二个字符进行加密 1,由2第三个字符, 50 00:03:04,395 --> 00:03:09,170 第四个字符由0,第五 通过如图1所示,第六2,依此类推。 51 00:03:09,170 --> 00:03:14,440 但请记住,我们要跳过 空格和符号和数字。 52 00:03:14,440 --> 00:03:21,520 这意味着,如果用户已经输入的 你好世界消息 53 00:03:21,520 --> 00:03:26,590 他们要加密,然后 我们希望通过0到加密的H 54 00:03:26,590 --> 00:03:32,680 对应于一个时,E 1,则 升2,升数:0,邻1。 55 00:03:32,680 --> 00:03:41,050 我们要跳过空格,加密 在W 2,邻由0,1,2,0。 56 00:03:41,050 --> 00:03:45,250 所以请注意,如果我们没有跳过了 空间,那么我们就会加密 57 00:03:45,250 --> 00:03:51,240 在W由0和结束时 不正确的字符串。 58 00:03:51,240 --> 00:03:57,470 >> OK,这就是我们所需要的变量 num_letters_seen的。 59 00:03:57,470 --> 00:04:04,450 如果我们只是要使用加密 这种方法,它不会跳过 60 00:04:04,450 --> 00:04:09,860 符号,空格和数字,那么我们 可以只使用变量i是什么 61 00:04:09,860 --> 00:04:12,540 索引到我们的关键短语。 62 00:04:12,540 --> 00:04:17,620 我们需要使用num_letters_seen保持 轨道在实际到位的 63 00:04:17,620 --> 00:04:21,146 我们要索引关键短语。 64 00:04:21,146 --> 00:04:32,240 因此,这里,如果关键字我们有,如果 num_letter_seen MOD keyword_length,所以 65 00:04:32,240 --> 00:04:34,570 为什么我们需要国防部 关键字长度是多少? 66 00:04:34,570 --> 00:04:36,630 >> 尊敬的顾客您好世界是一个很好的例子。 67 00:04:36,630 --> 00:04:42,310 如果关键字是ABC,那么我们就需要 不断由当时的加密b 68 00:04:42,310 --> 00:04:45,740 则c,然后翻转左右, A,B,C,A,B,C。 69 00:04:45,740 --> 00:04:50,110 因此,我们需要通过关键字长度国防部 以转回到身边。 70 00:04:50,110 --> 00:04:57,280 >> 因此,如果这是一个大写字母, 那么我们想通过加密 71 00:04:57,280 --> 00:05:01,450 在字母表中该字母的位置, 我们得到了公正 72 00:05:01,450 --> 00:05:06,730 减去了资本A.和 同样,对于小写字母,我们 73 00:05:06,730 --> 00:05:13,000 可以得到我们想要的键 减去了小写。 74 00:05:13,000 --> 00:05:16,910 所以,不管是否信 在关键短语是一个资本或 75 00:05:16,910 --> 00:05:21,640 小写字母,我们要 以相同的量进行加密。 76 00:05:21,640 --> 00:05:28,680 >> 现在,我们有我们的重点,我们在这里看到, 如果消息我是一个大写 77 00:05:28,680 --> 00:05:32,660 字符,然后我们要计算的 在那个字母位置 78 00:05:32,660 --> 00:05:39,460 字符,添加我们的关键是,换回来 围绕这样,如果我们去过去 79 00:05:39,460 --> 00:05:43,170 Ž我们回到A,B,C,依此类推。 80 00:05:43,170 --> 00:05:49,070 然后,终于,加回资本A.所以 我们移回[?访问?] 81 00:05:49,070 --> 00:05:52,010 而不是范围这些字符的 在字母数字位置 82 00:05:52,010 --> 00:05:53,540 这些字符。 83 00:05:53,540 --> 00:05:56,610 >> 和我们做同样的事情 小写字符。 84 00:05:56,610 --> 00:06:00,070 除非我们想减去了小写 一个和在背面上添加它 85 00:06:00,070 --> 00:06:02,900 最后,小写a。 86 00:06:02,900 --> 00:06:08,120 请注意,num_letter_seen只 如果增加的消息,我是 87 00:06:08,120 --> 00:06:09,640 按字母顺序排列。 88 00:06:09,640 --> 00:06:15,790 这就是我们如何跳过空格,符号和 在我们的关键短语,因为数字 89 00:06:15,790 --> 00:06:20,520 num_letter_seen是我们正在使用的是什么 索引到我们的关键字。 90 00:06:20,520 --> 00:06:24,540 >> 最后,在结束时,现在该消息 我已被加密,我们 91 00:06:24,540 --> 00:06:26,280 打印出来的消息我。 92 00:06:26,280 --> 00:06:27,890 就是这样。 93 00:06:27,890 --> 00:06:28,670 我的名字是罗布。 94 00:06:28,670 --> 00:06:31,020 这是的V @ genere。 95 00:06:31,020 --> 00:06:32,850 >> [音乐播放] 96 00:06:32,850 --> 00:06:36,651