2011-05-21 77 views
0

我有一個功能,必須將字符從一個數組更改爲另一個數組中的字符。這是一種簡單的加密。我有:簡單的JavaScript加密功能

var plainArray = ['A','B','C',...,'Z']; 
var cipherArray = ['a','b','c',...,'z']; 
function rotateToPosition(signalCharacter, indexCharacter, plainAlphabet, cipherAlphabet) 

已經在工作。 現在我必須編寫一個函數,將給定的單詞變成加密的單詞。

function encrypt(plainText, signalCharacter, indexCharacter, plainAlphabet, cipherAlphabet) 
{ 
    var encryptedString = signalCharacter; 
    //i is what will hold the results of the encrpytion until it can be appended to encryptedString 
    var i; 
    // rotate array to signal character position 
    var rotateArray = rotateToPosition(signalCharacter, indexCharacter, plainAlphabet, cipherAlphabet); 
    for (var count = 0; count < plainText.length; count++) 
    { 
     plainAlphabet = plainText.charAt(count); 
     i = cipherAlphabet[plainAlphabet]; 
     encryptedString = encryptedString + rotateArray[i]; 
    } 

    return encryptedString; 
} 

該函數返回信號字符,然後返回一串錯誤。你知道什麼是錯的嗎?

+6

什麼是錯誤? – 2011-05-21 10:33:52

+1

什麼是'rotateToPosition'函數? – JiminP 2011-05-21 13:35:41

+0

你用這個做什麼?我問這是因爲在JS中加密算法讓所有人看到,都不是很安全。你最好在服務器上進行加密。 – toneplex 2011-05-21 13:55:12

回答

1

您正在用一個字符覆蓋plainAlphabet,從而丟棄字母表。我想這不是你想要的。

但是,您只發布了rotateToPosition的簽名,而不是實際的代碼,所以我無法測試我的解決方案。

function encrypt(plainText, signalCharacter, indexCharacter, plainAlphabet, cipherAlphabet) { 
    var encryptedString = signalCharacter; 
    //i is what will hold the results of the encrpytion until it can be appended to encryptedString 
    var i; 
    // rotate array to signal character position 
    var rotateArray = rotateToPosition(signalCharacter, indexCharacter, plainAlphabet, cipherAlphabet); 
    for (var count = 0; count < plainText.length; count++) 
    { 
     var plainLetter = plainText.charAt(count); 
     i = cipherAlphabet[plainLetter]; 
     encryptedString = encryptedString + rotateArray[i]; 
    } 

    return encryptedString; 
} 
+0

是的,我也這麼認爲。在JS中,大多數非簡單的變量都是通過引用的。 – gaRex 2011-05-21 13:52:50