Простое шифрование Javascript, расшифровка PHP с помощью общего секретного ключа

Речь идет не о безопасности. Это также не должно усложнять работу. Я ищу простой алгоритм для изменения строки (url) таким образом, чтобы она не напоминала оригинал. Шифрование будет выполнено с помощью javascript. Затем я хочу передать зашифрованную строку функции PHP, чтобы вернуть ее в исходное. Оба конца могут делиться секретным ключом, или конверсии могут быть без ключа и полагаться только на логику.

Идеальное решение

  1. будет простой
  2. будут использовать доступные функции javascript для шифрования
  3. будут использовать доступные функции php для дешифрования
  4. будет выдавать зашифрованную строку, чтобы она не напоминала простой текст вообще
  5. будут использовать только строчные буквы и цифры в зашифрованной строке
  6. не является широко используемым методом, как Base64-ing, как шифрование.

Изменить: последнее требование было добавлено после ответа shamittomar .

Если это то, что вы хотите, вы можете кодировать и декодировать Base64 .

[EDIT]: после разъяснения ОП:

Поскольку вам не нужны широко используемые методы, здесь используется один редко используемый метод, который может сделать это для вас, предоставляя вывод только в LOWERCASE буквах и NUMBERS. Это Base32 Encode / Decode . Используйте следующие библиотеки:

Вы можете использовать побитовый XOR в javascript для кодирования строки и снова в PHP для ее декодирования снова. Я написал для вас пример Javascript. Он работает так же в PHP. Если вы вызовете enc () второй раз с уже закодированной строкой, вы снова получите исходную строку.

<html> <head><title></title></head> <body> <script type="text/javascript"> function enc(str) { var encoded = ""; for (i=0; i<str.length;i++) { var a = str.charCodeAt(i); var b = a ^ 123; // bitwise XOR with any number, eg 123 encoded = encoded+String.fromCharCode(b); } return encoded; } var str = "hello world"; var encoded = enc(str); alert(encoded); // shows encoded string alert(enc(encoded)); // shows the original string again </script> </body> </html> 

В PHP делайте что-то вроде этого (осторожно, это не проверено, и прошло много времени с тех пор, как я сделал PHP):

 $encoded = "..."; // <-- encoded string from the request $decoded = ""; for( $i = 0; $i < strlen($encoded); $i++ ) { $b = ord($encoded[$i]); $a = $b ^ 123; // <-- must be same number used to encode the character $decoded .= chr($a) } echo $decoded; 

Если речь идет не о безопасности, а о том, чтобы сделать ее трудно сломать, то как насчет ROT-13 ?

 //+ Jonas Raoni Soares Silva //@ http://jsfromhell.com/string/rot13 [rev. #1] String.prototype.rot13 = function(){ return this.replace(/[a-zA-Z]/g, function(c){ return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26); }); }; ... var s = "My String"; var enc = s.rot13(); // encrypted value in enc 

PHP имеет собственную функцию str_rot13 : http://php.net/manual/en/function.str-rot13.php

 $decrypted = str_rot13($_GET['whatever']); 

Как вы планируете реализовать (скрыть) секрет в Javascript? ИМХО это невозможно.

Изменить: ОК – не о безопасности .. тогда просто используйте любой механизм кодирования baseXX или rot. Но вы не можете сказать, что один из этих алгоритмов не будет хорошо известен …