Требования:
По сути, у меня есть серия устройств (под управлением NodeJS
), которые должны поддерживать свои собственные уникальные закрытые и открытые ключи. Они связываются с централизованным сервером в PHP
, вытягивая контент.
Когда запускается новое устройство, я хотел бы, чтобы оно генерировало закрытый и открытый ключ и отправляло только открытый ключ на сервер PHP для хранения.
Когда устройство выполняет запрос GET
на PHP-сервере, сервер должен использовать открытый ключ, который был ему предоставлен для шифрования данных.
Когда устройство получает этот ответ, оно должно иметь возможность использовать закрытый ключ для расшифровки этих данных.
В настоящее время:
В настоящее время я генерирую пару личного и открытого ключей, используя keypair . Я отправляю открытый ключ на сервер PHP, чтобы сохранить его и связать с уникальным устройством.
Я шифрую данные на PHP-сервере, используя EasyRSA :
$message = "Decrypt me if you can";
$publicKey = new PublicKey($storedPublicKey);
$encrypted = EasyRSA::encrypt($message, $publicKey);
return $encrypted;
Когда эта зашифрованная строка возвращается в приложение NodeJS
, я пытаюсь расшифровать ее, используя NodeRSA (где response
- строковый ответ от сервера PHP):
const key = new NodeRSA(storedPrivateKey)
const result = key.decrypt(response)
Однако это приводит к ошибкам:
Error during decryption (probably incorrect key).
Я полагаю, что мне здесь не хватает чего-то фундаментального, но я не уверен, что это может быть. Есть мысли?