2014-04-04 52 views
-1

我正在嘗試創建一個加密機器,在其中鍵入一個5位數的數字,它通過更改數字然後將它們轉換爲字母來加密該數字。方向如下:如何在JavaScript中將循環加密代碼放入可用表中?

必要的代碼添加到「加密」按鈕,執行以下操作:

一)創建一個for循環增加10到第一個框中輸入的數量和乘以 結果爲3,對此結果添加20,然後乘以5,對此結果添加30,然後乘以7,等等。按照該模式5次(5次迭代)。

B)迭代均已完成後,將有 內存中產生的數字,假設75432179

c)現在,這個數字需要變成字符(字母)的每個數字 匹配根據字母的位置將其轉換爲相應的字母表(0將 與字母表的第10個字母匹配)。在我們的例子:生成的字母 將是:gedcbagi(g是字母表中的7號信令,e爲第五字,d是4 信等)

d)的加密的最後一步過程是通過使用古代凱撒的密碼進一步爭奪字母:每個字母由另一個字母替換三個位置到 右邊。因此,最終的結果在我們的例子是:jhgfedjl(請注意,您 也可以執行步驟c)和d)相結合)

我有一個帶參數的表的形式來顯示這整個事情:

具有三個列和三行

  1. 在第一列中創建表,只需將描述信息如在圖1(上一 頁)中示出

  2. 在第二列上創建兩個文本框(將文本框的大小設置爲16)

  3. 在第三列上創建一個按鈕。標籤「加密」

我已經完成了大部分的代碼,但我似乎無法讓它工作。這是我到目前爲止的代碼:

<style type="text/css"> 
     body {background-color: black; color: lightgreen; font-family: helvetica; text-align: center} 
     table {margin-left: auto; margin-right: auto} 
    </style> 

    <body> 
    <script type ="text/javascript"> 

     function encrypt(num) { 
       var sum = 0, str, i, result, index; 
       var chars = "abcdefghijklmnop"; 
       var charBase = "0".charCodeAt(0); 
      for (i = 0; i < 5; i++) { 
       sum += (num * ((2 * i) + 3)) + ((i * 10) + 10);   
       } 

       str = sum + ""; 
       result = ""; 
      for (i = 0; i < str.length; i++) { 
       index = str.charCodeAt(i) - charBase + 3; 
       result += chars.charAt(index); 
      } 
       return result; 
     } 
     document.getElementById("go").addEventListener("click", function() { 
      var num = parseInt(document.getElementById("num").value, 10); 
      var out = encrypt(num); 
      document.getElementById("encryptedValue").innerHTML = out; 
     }); 


    </script> 

     <h1>ATM</h1> 
     <br/> 
     <hr/> 
     <br/> 

     <table align="center" border="1"> 
     <tr> 
      <td><b>Plaintext</b> (Plain information)</td> 
      <td><input type="text" size="16" onchange=''/></td> 
      <td><button id="go"> Encrypt </button></td> 
     </tr> 
     <tr> 
      <td><b>Ciphertext</b> (Encrypted information)</td> 
      <td><input type="text" name="encryptValue" size="16" onchange=''/></td> 
      <td></td> 
     </tr> 
     <tr> 
      <td>.</td> 
      <td></td> 
      <td></td> 
     </tr> 
     </table> 

    </body> 
+0

這是功課?你打算自己寫嗎? – jfriend00

+0

你是同一個用戶(不同的用戶ID,但它看起來是完全相同的文本和問題)寫這兩個問題[這裏](http://stackoverflow.com/questions/22799558/setting-upa-a- for-loop-for-an-encryption-scheme)和[here](http://stackoverflow.com/questions/22752881/for-loop-is-really-confusing-me)上的同一主題?如果是這樣,你應該堅持一個用戶ID和只有一個用戶ID,因爲你似乎使用我的代碼從這些問題之一,你可以請接受答案? – jfriend00

+0

我真的覺得你應該自己寫一些代碼。到目前爲止,這個答案中的代碼直接從我的答案複製到前一個問題。 – jfriend00

回答

0

試圖給你把你的意見的一個簡單的問題作出迴應:

這行代碼中的您有:

document.getElementById("encryptedValue").innerHTML = out; 

把結果將加密操作轉換爲頁面上的非表單對象(例如div或跨度),該對象具有id="encryptedValue"。您可以在HTML中創建一個div或span,併爲其提供該id,並且您的代碼應將結果放入該頁面上的該對象。

或者,將標記爲密文的<input>更改爲div。

或者添加id="encryptedValue"到密文<input>標籤和更改代碼,以上述行:

document.getElementById("encryptedValue").value = out; 
+0

我試過了,加密仍然沒有出現在新的文本框中 – user3496066

+0

document.getElementById(「encryptedValue」)。value = out; \t \t \t}); \t \t \t \t \t

ATM \t \t \t
\t \t \t
\t \t \t
\t \t \t <表ALIGN = 「中心」 BORDER = 「1」> \t \t \t \t \t \t \t​​明文(普通信息) \t \t \t \t​​ \t \t \t \t​​ \t \t \t \t \t \t \t \t \t \t​​密文(加密信息) \t \t \t \t​​<輸入的ID = 「encryptedValue」 大小= 「16」 平變化= ''/> \t \t \t \t​​ – user3496066

+0

@ user3496066 - 正如您可能看到的,在評論中發佈多行代碼或HTML是毫無意義的。他們根本不可讀。如果您希望人們瞭解您剛剛發佈的內容,請將其添加到問題的結尾,並發表評論,說明您添加的內容以及原因。更妙的是,把你的代碼放到一個jsFiddle中,並分享每個人都可以看到什麼是不工作的鏈接。 – jfriend00