Я пытаюсь зашифровать строку из приложения 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:
Может кто-нибудь помочь, пожалуйста? Спасибо, Джо