#javascript
#javascript
Вопрос:
У меня есть функция, которая должна изменять символы из одного массива на символы из другого. Это своего рода простое шифрование. У меня есть:
var plainArray = ['A','B','C',...,'Z'];
var cipherArray = ['a','b','c',...,'z'];
function rotateToPosition(signalCharacter, indexCharacter, plainAlphabet, cipherAlphabet)
уже работает.
Теперь я должен написать функцию, которая изменит данное слово на зашифрованное word.
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;
}
Эта функция возвращает символ сигнала, а затем строку ошибок. Вы знаете, что не так?
Комментарии:
1. В чем заключаются ошибки?
2. Что такое
rotateToPosition
функция?3. Для чего вы это используете? Я спрашиваю об этом, потому что выставление вашего алгоритма шифрования на всеобщее обозрение в JS не очень безопасно. Было бы лучше, если бы шифрование выполнялось на сервере.
Ответ №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;
}
Комментарии:
1. Да, я тоже так думаю. В JS большинство непростых переменных приводятся по ссылке.