Created
June 12, 2023 06:27
-
-
Save muhrusdi/067d4a8f46dbcb6d5aad275255690893 to your computer and use it in GitHub Desktop.
RSA Encrypt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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