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
187 +1
0
Ответы
1

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

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

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

20 Апр 2024 в 13:06
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир