Здравствуйте! Подскажите пожалуйста, должно ли так быть или это не совсем 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;$i<=100; $i++){
$keys = $rsa->createKey(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. Говорят что библиотека, которую я использую - "кривая".
Рассудите пожалуйста меня и моего коллегу, кто прав а кто нет! Спасибо