эквивалент crypto.publicEncrypt в PHP - PullRequest
1 голос
/ 06 марта 2020

Я пытаюсь зашифровать строку из приложения PHP в API NodeJS с помощью ключа publi c.

Пока в узле я использую встроенную библиотеку шифрования и имею следующий код для расшифровки строки:

decrypt(toDecrypt): string {
    const buffer = Buffer.from(toDecrypt, "base64");
    const decrypted = crypto.privateDecrypt(
      {
        key: this.privateKey,
        passphrase: this.passphrase
      },
      buffer
    );

    return decrypted.toString("utf8");
  }

Я давно искал и не могу найти эквивалентный код PHP, который будет проходить через приложение узла и правильно расшифровывать. Мои ключи генерируются с использованием:

const keys = await generateKeyPairSync("rsa", {
        modulusLength: 4096,
        publicKeyEncoding: {
          type: "spki",
          format: "pem"
        },
        privateKeyEncoding: {
          type: "pkcs8",
          format: "pem",
          cipher: "aes-256-cbc",
          passphrase: this.passphrase
        }
      });

РЕДАКТИРОВАТЬ:

Код PHP, который я использую в настоящее время:

<?PHP


$text = "TEST";

$key = "-----BEGIN PUBLIC KEY-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA6x5nGicq8jWbjRfeCot3
83M9Jo6wzhVAX9kKvIaKA51dR60qKKVXc8rJ3mWJIBsnWmEy1/QZ4BtEZ13ISFbt
DMzwMfV99hD12XqCvU1b45l//87Rqs1rE+7G90mW53mq5u2jmP/+7SCX+5r9ASLX
pJOoXRIpJpJhh/molv0PxS9b5c7nkrhGhpgQ1QeUSc3Q25kFP5PbAhphx08/M/KO
MaeBn+W4mhdS4Pt1Wgqa0T5PKkzr/uHd68f7IDqYWNKC9dMg0J2Rw8mo7g4L1oid
k/GkHk0UcSAe6FY5dsExgTMAEYwW7ngbPEQ8/BofGHWSnNVDFvuDxjCHAp+IEYa7
s3f+YmKqjoDDHkmx5kCYHYi+BK/gba3CLRfbvzlcd2YjOZZ8Mvd+1CBzYK5blyDv
Sefz8Kj+qmMOV9P4B9x4yVHGA57+vGmSbpEkdVUVd3JaazZFBSaiI8yQPeeljjze
0GH3V0BAPi3awCHVLYnbUJ1s0Q40RrEvWZQNjHGm17oHM0yfzgMUldJmUD6XGSOO
jJbfyAR4/TizosVedQ9CazTAogzFyqUtP74dzcNeHezKHz9ILngYTYuUT8p+wEIT
KejP5QqD/yumtUTNOYS/5fTvuTa7e97m0SgjlNHikol/DPcjz5RTf/tLxyVAft7I
3X5yUC7gDLdXBONMzhIA8YsCAwEAAQ==
-----END PUBLIC KEY-----";

$publicKey = openssl_pkey_get_public($key);

$output = "";
openssl_public_encrypt($text, $output, $publicKey, OPENSSL_PKCS1_OAEP_PADDING);
echo base64_encode($output) . PHP_EOL;

EDIT2:

Что PHP Скрипт дает мне:

PVtIhXVoG3IeM2VrzihDTqRvUADMZLK7qCjNkRtrOqgn1XVOsXXMijxaJc65UjCM/37ceMafdek2V9fxcUP7f1LvaBPGhZtDkZFcBBekrvM/oeMmA2U0UUIDu2SMHR8pLjl7kQLUIF8unjDiHW0PgylqC9e/6Z/ptFhlsQTJE7RJdW8euQUJV3CaNKOriRe+QJe1T7QV0OZ+Omi1PuRp0CA383BDmadWflEhVe6tXaTKSlLpSE+nT2vqJa+7I3brzXAspWgwVjabxSEteMLmH0SCybiQBp6bs2l0CoD88QoNMidIs+ktI+h5uy2vcWZzFCYq5I77r+Pola9xTDqDWuDYNuejCPOR4D5mb4GauIymATioUW0hRtJYBFJh2dbogDz+UNtzzaIUKwt8rd9vTM1v+KQpXmakwcnaqpIWedhl8/eGv0DQcVzcUABg6SbCRyvfESYljrLzmbc0kLFWp12Ov2AU9G7MXUIY0DCidS/VgHmFNnfPJvJ0HiVpilGGb2kfOpzP3Eoqy786Fd5IbAcCSNkRkLXGEEvHS3L7TnckqW28WAC2dt2HsEINx0s4Iu75n7tuTUwIZD7xCp0BGUW7tcnS3ZX8mcggfSp04mFhPpS3z1UU7m/iY3Xs0pkzlKAHfz7A518p2O4RsChEwVy0Us9cwjFfOCaBxQT/UxE=

Ошибка, которую мне дает Node: enter image description here

Может кто-нибудь помочь, пожалуйста? Спасибо, Джо

...