Skip to content

Instantly share code, notes, and snippets.

@muhrusdi
Created June 12, 2023 06:27
Show Gist options
  • Save muhrusdi/067d4a8f46dbcb6d5aad275255690893 to your computer and use it in GitHub Desktop.
Save muhrusdi/067d4a8f46dbcb6d5aad275255690893 to your computer and use it in GitHub Desktop.
RSA Encrypt
const crypto = require('crypto');
// const { privateKey, publicKey } = crypto.generateKeyPairSync('rsa', {
// modulusLength: 2048,
// publicKeyEncoding: {
// type: "pkcs1",
// format: "pem",
// },
// privateKeyEncoding: {
// type: "pkcs1",
// format: "pem",
// }
// });
// privateKey dan publicKey harus digenerate terlebih dahulu
const { privateKey, publicKey } = {
privateKey: `-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAih6josNqzmgqFXPVTfJBnqAB63SnapV0ipdKFa2mfzhUU5rV
XYwOWlehvJ8xKuqxJXiNLs67kCDkRJScom2JqJKdjzMmJ+7+DATB2yslXyUsvPYP
VFqR7x+YJjBg7PZQnPzMnA3ubSyXE1okvMeND8x9B1P4LWBD82BPXQ3oMxc8Lr3f
Wl0qct+EzySm58Ilc0btvZum8BOlLlYc90r01H74skjqt7NPLH7Q86neZFi7AKRZ
KUE5gMbUlcteJ7AcjALq3obIjyl/W7BajQ7yVRHUmqm0SvO5x+uTK5ClRlplKdnR
S7lFQBdkPwaIBxEzigZi4BTl8BBTi1e/IKB9jwIDAQABAoIBAAyqQZQHulACAjXk
YL9cgwLiJjrqf/2Ihd69f7gcK8PHrQfbj0wcLya+mWCb8ly+l47ZjoynvVA6i+P0
AqbsR26zPwpmBM4tnpMIjqQjwTIHzSHoqEAya+ZS7dc2oXSpI3w5vCNlLaNKLvJB
1lOPMtKrjB1zaDL0/FYhUzWztEKW8NoszdYUD2cKuT0vXoUX/pvQFfnAD6vDAFDZ
oALetQP7ECwuCa7JeTOLi1fy08mAGHY1SFAzhQcFVEZfUjuYUyhB87cWwS0Y5LjV
2xfwUeBfBAmErRvEmiEUpDGbRb+ErU1q00ibueZXt2xRMGisHE8t9xOPE9Wvauxe
wHCaXmUCgYEAv/Hr/lr7EkJKJWcF4vtBvAM6yiN044Aumw/EsAr7Z3eEIKCv4V+X
byGhTfavElUwywXBHY9JbYfSyoUjiyOUT6ya0npxBnYq2Fbz5/rGZscMrrHYG6eE
3SA8wT9SMEWsqkwxRVcnNvz7BYvtdySOETF0m9akmd2mSl8v4onzv/0CgYEAuDZc
AaIzqYM97QKqYCMBtpJfxTWStpRlFufPLdAD/G7C/Wr7uTOCbutfvgJ9LusD/DxU
t1pU85aIrTuXa0pfoPh+LyMfWl/2ShQccqpVlp9XXlSmSerc6+Be9MIoSlPAE5iU
DERbwz3zjG2tfkkXH+fMMQBbxNRbkZsDQXg+63sCgYBo+6PNEewC95jgTjHtDOnO
MKIGD1COYfybuQsmEkuhMsBkrB6mkQcdtHIqV0M4LroqQPJ3/Xf23XQQarOfFY23
6jsf5fJNy3Hxs9Vhy0qaykIIhqMhtQU5gLlaJQ0J9AHVfyjvuRRswf918Cuon6jI
hJk35zVOJuoeAWQKbtOP7QKBgQCtTyc8ujfUsY8fXzSgAg9oj0nfJkoD0JVS+YCn
318Arcxx06dEVLvQU03eXEUeUSmMs84YOrpV+jhYkwogfPZ/YYqGGosy4bm7dDRX
hP3FGeB+9TEFthtnJ87ug4SYeTbquNAAwod6ptxuL/ncKDPDZrdrGqU8B3anBKoJ
fHHl5QKBgDkgfFnMX+p24IVU4pj7twxGXNhaQMrBOWkQ2HPxQ2ShEUlQ1gqghaZ7
4OGf88+vM1Q6U3gV3hhAnK5h/CtVDI13MHdPanjgsnLAYVpzslzrEy5doRGfZJwU
5SCbgLa75oUuCFyG+zMyMz4PcFT0GHQrQAOigOQD31eaV87C4J58
-----END RSA PRIVATE KEY-----`,
publicKey: `-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAih6josNqzmgqFXPVTfJBnqAB63SnapV0ipdKFa2mfzhUU5rVXYwO
WlehvJ8xKuqxJXiNLs67kCDkRJScom2JqJKdjzMmJ+7+DATB2yslXyUsvPYPVFqR
7x+YJjBg7PZQnPzMnA3ubSyXE1okvMeND8x9B1P4LWBD82BPXQ3oMxc8Lr3fWl0q
ct+EzySm58Ilc0btvZum8BOlLlYc90r01H74skjqt7NPLH7Q86neZFi7AKRZKUE5
gMbUlcteJ7AcjALq3obIjyl/W7BajQ7yVRHUmqm0SvO5x+uTK5ClRlplKdnRS7lF
QBdkPwaIBxEzigZi4BTl8BBTi1e/IKB9jwIDAQAB
-----END RSA PUBLIC KEY-----`
}
const MY_SECRET_DATA = "Muhammad Rusdi"
const encryptMessage = (message) =>
crypto
.publicEncrypt(
{
key: publicKey,
padding: crypto.constants.RSA_PKCS1_OAEP_PADDING,
oaepHash: 'sha256',
},
Buffer.from(message)
)
console.log("encrypted ", encryptMessage(MY_SECRET_DATA).toString("base64"))
const encrypted = "NXciqY6xiA6wHj525HmoCweh5tUhFDSjWI/z6dobNJ+cTGaODzTzsziYT+bDWPyE+NoWgLVky6CQ6E4fZwVMmtjGXW1NSoN9Bil0G4ogy69QbmXJKfbpXAyeo173pIc+rEwpD31/ABFnSSJ22JvmOQ80XS4UFSjh/Hcz5x2Tf5im5xCKBUKWd7yLqAG+c/5U0ksE3CGBd9Qxl0Rb7TYdvldszB4I5rgcBKL4LpBZkQjlQUt2ilgmR4BwQG/y9nJLDaEWU5JHXVttLvo2+g5vKZwg59eieye2lb0VHSrsh8AL2pu6eQ3gdablxR9bkFyKIu2DQX1pdsalsq+B6AmmMg=="
const decryptMessage = (message) =>
crypto
.privateDecrypt(
{
key: privateKey,
padding: crypto.constants.RSA_PKCS1_OAEP_PADDING,
oaepHash: 'sha256',
},
Buffer.from(message, "base64")
)
.toString();
console.log("decrypted ", decryptMessage(encrypted))
// Muhammad Rusdi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment