RSA шифрование. Так должно быть или это такая реализация библиотеки? Здравствуйте! Подскажите пожалуйста, должно ли так быть или это не совсем RSA?
Использую библиотеку phpseclib в тестовом проекте.
Генерирую 100 ключей и сохраняю их в конфигурационные файлы, где название === подсоленному хешу от публичного и приватного ключа. Длина приватного ключа === 2048.public function gen_rsa()
{
$this->_include_crypt('Math_BigInteger');
$this->_include_crypt('Crypt_RSA');
$rsa = new \Crypt_RSA();
for($i=0;$icreateKey(2048);
$this->_save_rsa($keys['privatekey'], $keys['publickey']);
}
}
Потом пробую поработать с этой библиотекойpublic function test_rsa()
{
$response = [];
$this->_include_crypt('Math_BigInteger');
$this->_include_crypt('Crypt_RSA');
$rsa = new \Crypt_RSA();
$k = $this->_load_rsa('9962e61c03618f2e3eace79d604d6783'); // произвольно выбранный ключ из 100
# encrypt
$rsa->loadKey($k['public']); // шифрую сообщение#1 публичным
$response['enc_with_publ'] = $rsa->encrypt('public key encrypted string');
$rsa->loadKey($k['private']); // шифрую сообщение#2 приватным
$response['enc_with_priv'] = $rsa->encrypt('private key encrypted string');
# decrypt
$rsa->loadKey($k['public']);
$response['dec_by_publ_enc_with_private'] = $rsa->decrypt($response['enc_with_priv']);
$rsa->loadKey($k['private']);
$response['dec_by_priv_enc_with_publ'] = $rsa->decrypt($response['enc_with_publ']);
}
в $response:[
"dec_by_publ_enc_with_private" => "private key encrypted string"
"dec_by_priv_enc_with_publ" => "public key encrypted string"
]
Теперь вопрос:
Эта функция "двусторонняя"? v1: Можно шифровать публичным и расшифровать приватными
v2: Можно шифровать приватными и расшифровать публичным
Спрашиваю по той причине, что я не знаком достаточно с шифрованием и меня убеждают в том что так не должно быть. Что шифрование через RSA должно проходить только в одном направлении как в v1. Говорят что библиотека, которую я использую - "кривая".
Рассудите пожалуйста меня и моего коллегу, кто прав а кто нет! Спасибо

21 Авг 2019 в 07:12
171 +1
0
Ответы
1

RSA является асимметричным криптографическим алгоритмом, что означает, что у вас есть публичный и приватный ключи, и они используются для шифрования и расшифрования данных. И ваша реализация и использование библиотеки phpseclib выглядят правильно, если вы хотите шифровать данные с помощью публичного ключа и расшифровывать их с помощью приватного ключа (v1), или наоборот (v2).

Таким образом, ваша функция test_rsa() работает правильно и в соответствии с принципами работы RSA шифрования. Нет ничего кривого или неверного в использовании библиотеки phpseclib для этой цели.

Если у вас остались сомнения или дополнительные вопросы, не стесняйтесь задавать их для более подробного объяснения или уточнения.

20 Апр в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 493 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир