问题标签 [vigenere]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 命令行参数分段错误(核心转储)
我知道分段错误意味着我正在尝试使用我不应该触摸的内存,但我无法弄清楚它在我的代码中来自哪里。我为一个作业编写了一个程序,该程序使用 vigenere 的密码来加密一些纯文本。它编译得很好,但是当我使用命令行参数运行它时,我得到一个分段错误。
c - C中的Vignere Cipher:空间未被忽略
Vignere 密码的一般解释:
Vignere 密码是一种类似于凯撒密码的加密方法。此 Cipher 将一个单词作为参数,并将单词的字母解释如下 - a 为 0,b 为 1,c 为 2,依此类推。
因此,如果您的输入密钥是“abc”并且您想要加密“hi hello”之类的内容,则输出将需要 h 保持不变,i 移动 1 位,h 移动 2 位,e 再次保持相同(如它被移动 0),l 移动 1 位,另一个 l 移动 2,依此类推。
基本思想是每个字母在参数中移动相应的字母,空格和其他标点符号被忽略。如果参数比消息短(在大多数情况下),参数只是围绕消息循环。
我的问题:
唯一存在的问题是它似乎只是为句子的第一个单词做正确的事情。它没有忽略空格。
我在下面粘贴了我的新代码。
例如,对于程序./vigenere bacon
和消息Meet me at the park at eleven am
,我希望Negh zf av huf pcfx bt gzrwep oz
作为输出。但是,我得到的是Negh ne og tjs qaty bt svfvgb bm
. 或者例如,当我在 上运行程序./vignere bc
时ABCD ABCD
,我会期望BDDF BDDF
. 相反,我得到的是BDDF CCEE
(当它应用类似于bcbcbcbcb
而不是bcbc bcbc
.
虽然第一个单词正在正确更改,但它似乎正在加密整个句子,而它应该只加密字母 - 我已经使用 isalpha 命令指定了这一点。
这就是为什么它看起来有点令人费解。
代码:
注意:这实际上是 C 而不是 C++,并且 GetInt() 和 GetString() 等一些命令在我正在使用的 CS50 库中可用。
c - C 语言中的 Vigenere 密码:不完全加密
Vigenere 密码的一般解释:
Vigenere Cipher 是一种类似于 Caesar Cipher 的加密方法。此 Cipher 将一个单词作为参数,并将单词的字母解释如下 - a 为 0,b 为 1,c 为 2,依此类推。
因此,如果您的输入密钥是 abc 并且您想要加密“hi hello”之类的内容,则输出将需要 h 保持不变,i 移动 1 位,h 移动 2 位,e 再次保持不变(因为它是被移动 0),l 移动 1 位,另一个 l 移动 2,依此类推。
基本思想是每个字母在参数中移动相应的字母,空格和其他标点符号被忽略。如果参数比消息短(在大多数情况下),参数只是围绕消息循环。
我的问题:
我的信息刚刚被 Vignere Cipher 的第一个字母加密。
例如,./vc bc
---->message: ABCDE ABCDE
变为BCDEF BCDEF
。换句话说,整个消息只是被 b 的值移动,而它应该被 bc 的值移动(第一个字母+1,其他每个字母+2。)
尽管处于循环中,但我不明白为什么会发生这种情况。
代码:
c - stuck with the vigenere.c
I am stuck in this example. Whenever I put the keyword 'bacon' I get the wrong answer. Any idea why this is happening? I can't find the bug and I have tried a lot. Can you please help me?
When I run this: ./vigenere bacon
and input the text Meet me at the park at eleven am
the answer should be Negh zf av huf pcfx bt gzrwep oz
, but instead I get Negh ne og tjs qaty bt syfvgb bm
Update: I made some changes as suggested by the comments but still having the same problem.
c - CS50 Vigenere 密码输出错误
我正在通过 EDX 学习哈佛的 CS50 课程(仅对我自己而言,这不是评分工作)。我来自 PSET2 的 Vigenere 密码给出了错误的输出 - 例如,一个密钥和一个 的输入都a
应该导致输出a
,而是给出t
. 但是,我无法确定问题出在哪里。
encryption - 用 2 个 vigenere 钥匙制作 1 个钥匙
我有这个关于 Vigenere 代码的学校作业。
我有 2 个键:AB 和 XYZ。使用这些密钥对文本进行两次加密。问题是:
- 如何从这 2 个钥匙中取出 1 个钥匙?
- 有 3 把钥匙时如何制作 1 把钥匙?
c - 迭代密钥字符串时的 Vigenere 密码“浮点异常(核心转储)”
我正在研究的这个程序是一个 vigenere 密码,其中迭代了一个“纯文本”字符串,其中每个字母字符都由按字母顺序 0 索引的“键”字符串 (argv[1]) 进行调整。当到达关键字符串的末尾时,它应该循环回到第一个字符。我已经为此工作了一段时间,但我遇到了这个错误。程序到达“keyi”的初始化(这意味着“key”字符串的迭代),然后抛出错误“浮点异常(核心转储)”。现在,我不确定如何读取被转储的“核心”文件,但我会根据错误猜测我的定义以某种方式创建了一个导致问题的浮点数。我就是不能 不了解浮动是如何创建的。一个 int 和另一个 int 的其余部分应该是一个 int,对吗?
我不确定我还能在这里尝试什么,我真的很想知道我在这里的错误是什么,然后继续前进。
java - 为什么编译器会给出“ java.lang.ArrayIndexOutOfBoundsException: x -error?(大小取决于输入)
我正在制作一个小程序来猜测一个vigenere-cipher的密钥长度,给定长度在5-15之间,在java中。我通过计算转置的标准偏差来做到这一点。但我真正的问题是为什么我在方法“countFrequency”中的数组中出现越界错误。我似乎看不到它超出范围的地方。
我知道我的程序可能会更有效率,但我认为一旦修复了这个错误,它应该可以工作。我的程序代码如下。
谢谢!
}
c - 我不知道为什么我会收到分段错误错误
在阅读之前,请记住我是一名学生。获得详细的解释比简单的一行代码说“你去我修好了”要有益得多。我将在我的提交中链接这篇文章,我们确实对学术诚信以及什么是复制与帮助有非常严格的规定,如果能牢记这一点,我将不胜感激。
该项目的目的是创建一个 vigenere 密码。以下是我的老师提供的指示:
你本周的最后一个挑战是在 vigenere.c 中编写一个使用 Vigenère 密码加密消息的程序。该程序必须接受一个命令行参数:关键字 k,完全由字母字符组成。如果您的程序在没有任何命令行参数、多个命令行参数或一个包含任何非字母字符的命令行参数的情况下执行,您的程序应该立即报错并退出,main 返回 1(因此表示我们自己的测试可以检测到的错误)。否则,您的程序必须继续提示用户输入明文字符串 p,然后它必须根据 Vigenère 的密码用 k 对其进行加密,最终打印结果并退出,main 返回 0。
对于 k 中的字符,您必须将 A 和 a 视为 0,将 B 和 b 视为 1,...,并将 Z 和 z 视为 25。此外,您的程序必须仅将 Vigenère 密码应用于 p 中的字符,如果该字符是一封信。所有其他字符(数字、符号、空格、标点符号等)必须原样输出。此外,如果您的代码即将将 k 的第 j 个字符应用于 p 的第 i 个字符,但后者被证明是非字母字符,则您必须等待将 k 的第 j 个字符应用于 p 中的下一个字母字符; 你还不能前进到 k 中的下一个字符。最后,您的程序必须保留 p 中每个字母的大小写。
我很确定我达到了迭代代码的要求,确保密钥循环是否比被加密的短语短,并确保我没有将密钥应用于非字母字符。但是,在提示输入要加密的字符串之前,我得到了一个分段默认值,所以我很确定问题出在代码的上半部分。我已经查看了很多代码,但我仍然无法弄清楚为什么它会一直出现段错误。
java - 维吉尼亚密码 java UTF-8
大家好,读到这里的人!
我需要在 Java 上实现 Vigenere 密码。我有一个 .txt 文档,我将对其进行阅读、编码和解码。这里是:
我的问题是我不知道如何正确移动字符,根据这张表,拉丁字母的代码从 0061 到 007A。我需要的德文:00C0 - 00FF,波兰文:0100-017F,俄文 0430-044F,而且我没有打过中文。
如何指定unshiftChar
并shiftChar
使其正确?现在我的输入看起来像这样:
这是一个Java代码: