У меня есть веб-сайт, и я пытаюсь обезопасить свои формы. Я провел некоторое исследование, и хотя я не программист, я аутентифицирую пользователей с помощью самодельного механизма «вызов-ответ» и шифрую значения форм, используя шифрование aes из библиотеки mcrypt. Пока все хорошо. За исключением того, что мой пароль AES должен быть отправлен от клиента к серверу ... безопасно. Я думал, что RSA сделает свое дело. Итак, я скачал phpseclib, я успешно зашифровал / расшифровал на стороне сервера. Теперь мне нужен был код на стороне клиента для шифрования RSA. Я использовал эту библиотеку здесь http://www.ohdave.com/rsa/.
Теперь ... вот моя проблема.
- Я генерирую пару ключей в php, используя phpseclib.
- Я извлекаю частный показатель, открытый показатель и модуль (открытый).
Я отправляю открытый показатель и модуль (public) в javascript.
include('Scripts/phpseclib/Crypt/RSA.php');
require_once('Scripts/phpseclib/Math/BigInteger.php');
session_start();
$rsa = new Crypt_RSA();
extract($rsa->createKey(512));
$priv = $rsa->_parseKey($privatekey,CRYPT_RSA_PRIVATE_FORMAT_PKCS1);
$privExp = $priv['privateExponent']->toHex();
$pubExp = $priv['publicExponent']->toHex();
$pubMod = $priv['modulus']->toHex();
$rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1);
$_SESSION['privatekey']=$privatekey;
$_SESSION['publickey']=$publickey;
Javascript генерирует случайное число, которое станет паролем, который я буду использовать для шифрования aes.
Javascript будет использовать открытый показатель и модуль (public), отправленные с php с сервера, чтобы зашифровать случайно сгенерированную строку в javascript (которая станет ключом aes), и отправит ее обратно на php-сервер для дешифрования.
password = random();
key = new RSAKeyPair(
"<?php echo $pubExp; ?>",
"",
"<?php echo $pubMod; ?>"
);
x = encryptedString(key,password);
y = decryptedString(key,x);
document.write(" text cryptat = "+x);
document.write(" text decryptat = "+y);
window.location = "rsa.php?text="+x;
</script>
php-сервер получит зашифрованную строку, и с помощью частного экспонента, сгенерированного при запуске, сможет расшифровать ключ aes (случайным образом генерируемый javascript на стороне клиента), создавая, таким образом, соглашение о ключах между клиент-сервером без вмешательство извне.
ПРОБЛЕМА: JavaScript зашифровывает случайную строку .... но не PKCS # 1 v1.5 ..... phpseclib принимает только заполнение PKCS # 1 v1.5, поэтому сценарий php не может правильно расшифровать.
Пожалуйста, помогите мне найти или изменить JavaScript, чтобы вывести в скрипт php зашифрованный строковый формат PKCS # v 1.5, который он ожидает.