根据我的模式,输出不是一个有意义的单词。任何人都可以识别出不同的模式来输出有意义的单词。
考虑以下模式: A→D; M→P; X→A; a→d; m→p; x→a;
解决以下信息
Vrphwklqj phdqlqjixo
提示:答案是有意义的。
我正在考虑应该有两个字母的区别;输出:Yuskznotm .....(根本没有意义)。
任何人都可以看到不同的模式并帮助我。
答案 0 :(得分:0)
问题是错误的
图案应为D-> A,P-> M,X-> U
那就是使用-3或+23(NOT +3)
的凯撒密码
正确阅读问题
用它来检查
import java.io.*;
class CaesarCipher
{
public static void main(String s)throws IOException
{
for(int i=1;i<27;i++)
{
int l=s.length();
for(int j=0;j<l;j++)
if(Character.isLetter(s.charAt(j)))
{
if(((s.charAt(j))+i)>122)
System.out.print((char)((s.charAt(j))+i-26));
else
System.out.print((char)((s.charAt(j))+i));
}
else
System.out.print((char)s.charAt(j));
System.out.println();
}
}
}
只有小写字母
它每次都会添加一个新的班次来创建一个新的字符串
1,2,3,......,26个
您可以在添加23时查看问题的答案,也可以减去3,这应该是您误认为的真实问题
它将显示所有可能的CAESAR解决方案,看起来有意义
答案 1 :(得分:0)
谢谢Paulsam。你做对了。任务问题存在差异。我想通了,并为它写了一个javascript。
<!doctype html>
<html>
<head>
<title>Ceaser-Cipher-Convertion</title>
</head>
<body>
<script>
//此函数接受输入并定义转换逻辑
function convert()
{
//此处提供了要转换为消息的输入
var input = "Vrphwklqj phdqlqjixo";
/ *转换逻辑基于Ceaser-Cipher方法。我们从字符串中检索字符的ASCII值。 根据公式; m = c + d mod 26.但是我们使用ASCII值,我们必须用-26代替mod 26。 来自模式的解密密钥是23.因此m = c + 23-26 =&gt; m = c - 23.但是对于ASCII值; A-C;公式返回 非字母ASCII值。作为这三个字母的例外; m = c + 23; 这样获得的ASCII值将被转换回字符* /
for(var i=0; i<input.length; i++)
{
var asc_code = input.charCodeAt(i);
var conv_code;
//Conversion of alphabets (a-c)
if((asc_code >= 65 && asc_code <= 67) || (asc_code >= 97 && asc_code <= 99))
{
conv_code = asc_code+23;
}
//其他字母的转换
else if((asc_code >= 68 && asc_code <= 90) || (asc_code >= 100 && asc_code <= 122))
{
conv_code = asc_code-3;
}
//非字母字符的转换
else conv_code = asc_code;
//输出消息
var message = String.fromCharCode(conv_code);
document.write(message);
}
}
convert();
</script>
</body>
</html>