【问题标题】:Setting up a for loop for an encryption scheme为加密方案设置 for 循环
【发布时间】:2014-05-13 00:49:14
【问题描述】:

正如我 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>

【问题讨论】:

  • 欢迎来到 Stack Overflow。请尽快阅读About 页面。你很幸运我看到了这个。当你标记一个问题时,你通常应该为你的问题所涉及的主要语言添加一个标记——在这种情况下是 JavaScript。这将引起懂语言的人的注意。你的标题应该更能描述问题,而不是你的心态。而且您应该修复您的摇摆不定的换档键(或使用正确的大写字母)。一个坚实的问题文本块很难阅读。你也应该把它分成几段。提问时请小心。
  • system.out.encryptinfo 不是一个东西。你确定你没有混淆 Java 和 JavaScript 吗?
  • for 循环的五次迭代将像这样完成:for (encryptThis=1; encryptThis &lt;=5; encryptThis++)。此外,javascript 中没有 int 数据类型。所有变量都用var 声明。
  • 谢谢@jfriend00!你知道我应该为这个循环做什么吗?我不知道我是否可以在这个 for 循环中创建一个函数,或者因为这种特定情况有 5 次迭代,它们都应该通过不同的数字增加我的值
  • 我不明白你在问什么。如果人们不理解您的问题,他们将无能为力。您可能可以先对您尝试实现的加密算法进行更完整的描述。如果需要,请在伪代码中显示所有 5 个步骤(例如,概述每个步骤的英文单词)。

标签: javascript arrays loops for-loop


【解决方案1】:

这是对我认为您正在尝试做的事情的解释:

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;
}

它接受一个数字作为参数并返回一个字符串。

工作演示:http://jsfiddle.net/jfriend00/UW245/

【讨论】:

  • 在工作演示中,我认为我不能使用导致问题的 addeventlister,因为我的数学需要有点不同,所以我不得不更改它,我的 chrome 控制台说 addeventlister 是一个问题
  • @user3479553 - 什么工作演示?您问题的任何代码中都没有addEventListener()。我根本不知道你在说什么。如果您需要帮助诊断特定错误,那么您必须准确地告诉我们错误消息是什么以及它在哪一行代码,并向我们展示足够多的代码让我们了解可能发生的情况。如果您在我的演示中谈论addEventListener(),那只是为了触发代码在演示中运行 - 您可以根据需要触发代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多