Нужен аналог в javascript для функции openssl_private_encrypt php.
Я ожидаю того же результата.
Справочник по PHP openssl-private-encrypt https://www.php.net/manual/en/function.openssl-private-encrypt.php
<?php
openssl_private_encrypt(
'RomaxaCoder',
$partialSign,
<<<PK
-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCy745x8AqGKlTWBu2Ub80boPaQxo/midZ4LHZ0zbPpiCAfkADN
VYSe8OckPKutdjPX7SNAx66PgQRH1xrz1gysbRrf8K/mA0LQ00MKBFaFottWt5cC
IaUS9zvCgPw7prwng3hkGShnvTSMXiKFyt1E3RTvpXRk0u46D6hKiy+TSQIDAQAB
AoGBAJe1jjNCDtoz19vi4doBdIhhT8vt3iHbafBX2lMr+MceeAXqpRNy10+e9op9
uh0G4+vGDialZnYbMBLs6Ngl+nVnzn+cN1MMJ18brgf3biZKzVzK9wmOW4eycWaR
9eLa7/+ns8Cw5GsLJdG+OHR2gXRXU4hzUFdf90UUbP+kuqK1AkEA2X04XznFDNmT
NuhyCixwinlziazJBp/81jjaBhYj3cG0nTF0Gactc/yD0yudbrMqjLBfts+FbG3Z
yFHKrAB/cwJBANKetll3M3aCGsermEK+9hbB8yMihCju6pAwClUNkrAgrm9zU4LP
WkC81RDzXbz+pfIqpopfn34F3+U2iMiOe1MCQCXpTgpLZ631v1Oy8S4U0QlSYnF9
TQ16lfhBsL+e3GGrgnBkTniqS6IMQm5tC+RgFuqvU//p7LgZ7fydRVb2P0ECQFp9
YADuKskmutTAj6lVnCtI5upYgQmJJHQQf8/tBfHwCKHPnbic17zqpGwk80go7Ckw
U98tmDuv0HMNTBVGygsCQALck7VNBRjL9iFzJMFis+alcP1ZC88wOLPvIxYbevUH
c8rZwRqt1aHwaWOoxcVom+tyzRC6gEYoBarmU1bX4No=
-----END RSA PRIVATE KEY-----
PK
);
var_dump(base64_encode($partialSign));
Выход:
gBeCtvLsVAYI2ubm1Q2GHZoZdCYwGAIoDHxBf4K2O6tJ5FTojHS+n2OkMyNkLuAN93YlnPlefU4WV65OikhdJSghOsT4f8ZER01lweSvPNMgEdEABlHDDv7mWFwNkGi4qvSCgak+xP45G6zPUZJ3uHO5U4Ki1j3WQR0tyrRr5vI=
Нужен тот же результат в JavaScript.
index.js
const crypto = require('crypto');
const message = 'RomaxaCoder';
const privateKeyPem = `-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCy745x8AqGKlTWBu2Ub80boPaQxo/midZ4LHZ0zbPpiCAfkADN
VYSe8OckPKutdjPX7SNAx66PgQRH1xrz1gysbRrf8K/mA0LQ00MKBFaFottWt5cC
IaUS9zvCgPw7prwng3hkGShnvTSMXiKFyt1E3RTvpXRk0u46D6hKiy+TSQIDAQAB
AoGBAJe1jjNCDtoz19vi4doBdIhhT8vt3iHbafBX2lMr+MceeAXqpRNy10+e9op9
uh0G4+vGDialZnYbMBLs6Ngl+nVnzn+cN1MMJ18brgf3biZKzVzK9wmOW4eycWaR
9eLa7/+ns8Cw5GsLJdG+OHR2gXRXU4hzUFdf90UUbP+kuqK1AkEA2X04XznFDNmT
NuhyCixwinlziazJBp/81jjaBhYj3cG0nTF0Gactc/yD0yudbrMqjLBfts+FbG3Z
yFHKrAB/cwJBANKetll3M3aCGsermEK+9hbB8yMihCju6pAwClUNkrAgrm9zU4LP
WkC81RDzXbz+pfIqpopfn34F3+U2iMiOe1MCQCXpTgpLZ631v1Oy8S4U0QlSYnF9
TQ16lfhBsL+e3GGrgnBkTniqS6IMQm5tC+RgFuqvU//p7LgZ7fydRVb2P0ECQFp9
YADuKskmutTAj6lVnCtI5upYgQmJJHQQf8/tBfHwCKHPnbic17zqpGwk80go7Ckw
U98tmDuv0HMNTBVGygsCQALck7VNBRjL9iFzJMFis+alcP1ZC88wOLPvIxYbevUH
c8rZwRqt1aHwaWOoxcVom+tyzRC6gEYoBarmU1bX4No=
-----END RSA PRIVATE KEY-----`;
const privateKey = crypto.createPrivateKey({
key: privateKeyPem,
format: 'pem',
type: 'pkcs1'
});
const encryptedBase64 = crypto.privateEncrypt(privateKey, Buffer.from(message, 'utf8')).toString('base64');
console.info(encryptedBase64);
console.info(encryptedBase64 === 'gBeCtvLsVAYI2ubm1Q2GHZoZdCYwGAIoDHxBf4K2O6tJ5FTojHS+n2OkMyNkLuAN93YlnPlefU4WV65OikhdJSghOsT4f8ZER01lweSvPNMgEdEABlHDDv7mWFwNkGi4qvSCgak+xP45G6zPUZJ3uHO5U4Ki1j3WQR0tyrRr5vI=');
Исполнение:
export OPENSSL_CONF=/dev/null && node index.js
Выход:
gBeCtvLsVAYI2ubm1Q2GHZoZdCYwGAIoDHxBf4K2O6tJ5FTojHS+n2OkMyNkLuAN93YlnPlefU4WV65OikhdJSghOsT4f8ZER01lweSvPNMgEdEABlHDDv7mWFwNkGi4qvSCgak+xP45G6zPUZJ3uHO5U4Ki1j3WQR0tyrRr5vI=
true
Стандартного аналога VanilaJS нет, и я не знаю, как его сделать.