Реализация RSA шифрования на PHP

231
26 августа 2017, 01:40

Всем привет, пишу бота, который будет входить в аккаунт на одном сайте, там стоит шифрования пароля через RSA (видимо, чтобы в запросе его не было - для обеспечения безопасности). Я порылся в скриптах сайта, там алгоритм следующий: Делаем запрос на сервер /getrsakey/, получаем некий ключ (publickey_mod_ и какой-то дополнительный параметр publickey_exp (срок действия, наверно, он был таким - "010001" - но я не смотрел, изменяется ли он когда-либо), ответ примерно такой. Далее скрипт выполняет шифрование по ключу и этому доп параметру:

var pubKey = RSA.getPublicKey(results.publickey_mod, results.publickey_exp);

Потом шифрует пароль, полученный из формы:

var encryptedPassword = RSA.encrypt(password, pubKey);

Вопрос следующий, как реализовать это на PHP? Порыв в интернете, я не нашел реализацию метода getPublicKey с двумя параметрами. Спасибо за ответы.

Answer 1

publickey_mod - это модуль, а publickey_exp - это экспонента. Эти компоненты и образуют публичный ключ.

При помощи библиотеки phpseclib вы можете превратить эти компоненты в в объект, который можете использовать в дальнейшем.

<?php
include('Crypt/RSA.php');
// это модуль
$modulus = 'yEQs2LxSHBZgZCH0rRQQy9kmry8g2tNhQL1B9f5azNz9Ce9pXPgSRjVUo1B9Ggb/FK3jy41wWd2IfS6rse3vBzRsabMj29CVODM/19yZPmwEmjJHCgYd+AA2qweKZanDp4FLsSw/kyV5WoPN16GHEMLmLGkJFNIWtzzH5jV+S80=';
// это экспонента
$exponent = 'AQAB';
$rsa = new Crypt_RSA();
$modulus = new Math_BigInteger(base64_decode($modulus), 256);
$exponent = new Math_BigInteger(base64_decode($exponent), 256);
$rsa->loadKey(array('n' => $modulus, 'e' => $exponent));
$rsa->setPublicKey();
echo $rsa->getPublicKey();
READ ALSO
Не получается подключить composer

Не получается подключить composer

Добрый деньЯ пытаюсь подключить composer к сайту на modx revolution на хостинге beget

194
Передавать ли $_POST явно?

Передавать ли $_POST явно?

Можно сделать

147
Когда стоит наследоваться от класса?

Когда стоит наследоваться от класса?

Ведь можно сделать просто:

166