正如我stated before我正在尝试为加密机器(玩具机器,而不是NSA安全的机器)制作一个特定的for
循环。
当我按下加密按钮时,我需要加密才能运行,然后在另一个文本框中生成加密的信息。所以我有一个文本框,用户输入要加密的数字(介于10000和99999之间),然后按加密,信息显示在第二个栏中。我有设置,但for循环很棘手。
以下是我的指示:
将必要的代码添加到“加密”按钮以执行以下操作:
a)创建一个for循环,将10添加到第一个框中输入的数字并乘以 结果为3,在此结果中加20,然后将其乘以5,然后将此结果加30 将它乘以7等。遵循该模式5次(5次迭代)。
b)迭代完成后,将得到一个结果数 记忆,让我们说75432179
c)现在,需要通过匹配每个数字将此数字转换为字符(字母) 根据字母的位置将其对应的字母表字母(0将 与字母表的第10个字母相匹配)。对于我们的例子:结果字母 将是:gedcbagi(g是字母表的第7个字母,e是第5个字母,d是第4个字母 信等。)
d)加密过程的最后一步是使用。进一步加扰字母 古代凯撒的密码:每个字母被另一个字母替换为三个位置 对。因此,我们示例中的最终结果将是:jhgfedjl(注意你 也可以做步骤c)和d)合并)
这是我到目前为止我的脚本标签;请告诉我我做错了什么:
<script type="text/javascript">
q=1
for (encryptThis=1; encryptThis <=5; encryptThis++){
if (encryptThis>=10000 && encryptThis<=99999){
encryptinfo=((q+2)*10+encryptThis);
}else{
alert("number should be between 10000 and 99999");
}}
</script>
然后通过我的输入找到我桌子的底部:
<tr>
<td>Plaintext (Plain information)</td>
<td><input type="text" name= "encryptThis" size="16" onchange=' '/></td>
<td><input type="button" value=" Encrypt " onclick='
system.out.encryptinfo.print((q+2)*10+encryptThis);
'/></td>
和....
<tr>
<td>Ciphertext (Encrypted information)</td>
<td><input type="text" name= "encryptinfo" size="16" onchange=' '/></td>
<td></td>
</tr>
答案 0 :(得分:0)
以下是对我认为您尝试做的事情的解释:
function encrypt(num) {
var sum = 0, str, i, result, index;
var chars = "abcdefghijklmnop";
var charBase = "0".charCodeAt(0);
for (i = 0; i < 5; i++) {
// ((2 * i) + 3) goes 3,5,7,9,11
// ((i * 10) + 10) goes 10,20,30,40,50
sum += (num * ((2 * i) + 3)) + ((i * 10) + 10);
}
// convert num to string to get digits
str = sum + "";
result = "";
for (i = 0; i < str.length; i++) {
// get offset from "0" and add 3 for the cipher
index = str.charCodeAt(i) - charBase + 3;
// convert that index to a character
result += chars.charAt(index);
}
return result;
}
它以一个数字作为参数,并返回一个字符串。