在matlab解密消息吗?
7 Ansichten(30天)的
Altere Kommentare anzeigen
我试图在matlab解密消息。我的代码能够解密一些短消息低调,但是当我试图解密的消息像一个关键9它不会工作。我认为我的代码是正确的,但是我想我有一些缺陷。谁能帮忙吗?(使用ASCII值)
original_message =输入(“请输入你想要的消息解密:”,“年代”)%原始消息
关键=输入(“什么将你使用的加密密钥:“)
number_message =双(original_message)
为k = 1:长度(original_message)
如果number_message (k) > = 65 & & number_message (k) < = 90
number_message (k) = number_message (k)的关键
如果number_message (k) < = 90
number_message (k) = number_message (k) + 26
结束
elseifnumber_message (k) > = 97 & & number_message (k) < = 122
number_message (k) = number_message (k)的关键
如果number_message (k) < = 122
number_message (k) = number_message (k) + 26
结束
结束
结束
流(“解密消息% s \ n”number_message)
0 Kommentare
Akzeptierte Antwort
杰夫•海斯
我30 Okt。2015
尼克-在未来,请标记你的问题
家庭作业
。注意你的条件
如果number_message (k) > = 65 & & number_message (k) < = 90
如果上面的是真的,那么你的加密的值是在65年和90年之间,执行下面的代码
number_message (k) = number_message (k)的关键
所以加密的值
关键
减去。这意味着你的新区间的值,这是(65、90)现在(65 -键,90 -键)。重要的是解密值现在可以小于65。这意味着你的下一个检查应该为这些值
如果number_message < 65 (k)
number_message (k) = ? ? ?
结束
所以上述应如何调整?
2 Kommentare
Weitere Antworten (1)
TastyPastry
我30 Okt。2015
有三件事不要使用您的代码:
- 它不工作的时候关键是> 26。
- 你的检查值是否字母是错误的。目前,代码试图将ASCII值回适当的范围65 - 90,97 - 122年这封信已经在范围之内。如。,如果the current letter is b, value 66, it would get changed to \, value 92.
- 不改变向量返回一个字符串。
这是我将添加/改变的代码:
number_message = char (number_message);
关键= mod(键,26);
number_message (k) < = 96
number_message (k) < = 64
我让你把置换作为练习。
同时,有很多的例子,凯撒密码写在MATLAB在线。我鼓励你看这些,因为这是一个常见的问题在大多数课程。