LINKeRxUA
@LINKeRxUA
web dev

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;$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. Говорят что библиотека, которую я использую - "кривая".

Рассудите пожалуйста меня и моего коллегу, кто прав а кто нет! Спасибо
  • Вопрос задан
  • 732 просмотра
Решения вопроса 1
Ocelot
@Ocelot
Да, оба режима - совершенно нормальное использование RSA.
v1 используется для собственно шифрования, v2 - например, для цифровой подписи.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы