{"id":18456,"library":"jsencrypt-node","title":"JSEncrypt","description":"JSEncrypt for node & browser. Version 1.0.4 provides RSA encryption/decryption using the JSEncrypt library, compatible with both Node.js and browser environments. It is a fork of the original JSEncrypt by Apipost. The library allows setting public/private keys in PEM format and uses the RSA algorithm. It is suitable for basic RSA operations but note it is a thin wrapper around the original JSEncrypt. No recent updates; release cadence is low.","status":"active","version":"1.0.4","language":"javascript","source_language":"en","source_url":"https://github.com/Apipost-Team/JSEncrypt","tags":["javascript","JSEncrypt","RSA"],"install":[{"cmd":"npm install jsencrypt-node","lang":"bash","label":"npm"},{"cmd":"yarn add jsencrypt-node","lang":"bash","label":"yarn"},{"cmd":"pnpm add jsencrypt-node","lang":"bash","label":"pnpm"}],"dependencies":[],"imports":[{"note":"ESM default import works; CommonJS requires default import style.","wrong":"const JSEncrypt = require('jsencrypt-node')","symbol":"JSEncrypt","correct":"import JSEncrypt from 'jsencrypt-node'"},{"note":"In CommonJS, default export is under .default.","wrong":"const JSEncrypt = require('jsencrypt-node')","symbol":"JSEncrypt","correct":"const JSEncrypt = require('jsencrypt-node').default"},{"note":"Named export works in CommonJS.","wrong":"","symbol":"JSEncrypt","correct":"const { JSEncrypt } = require('jsencrypt-node')"}],"quickstart":{"code":"import JSEncrypt from 'jsencrypt-node';\n\nconst encrypt = new JSEncrypt();\nencrypt.setPublicKey('-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1QQRl0HlrVv6kGqhgonD6A9SU6ZJpnEN+Q0blT/ue6Ndt97WRfxtSAs0QoquTreaDtfC4RRX4o+CU6BTuHLUm+eSvxZS9TzbwoYZq7ObbQAZAY+SYDgAA5PHf1wNN20dGMFFgVS/y0ZWvv1UNa2laEz0I8Vmr5ZlzIn88GkmSiQIDAQAB-----END PUBLIC KEY-----');\nconst cipher = encrypt.encrypt('Hello, world!');\nconsole.log(cipher);\n\nconst decrypt = new JSEncrypt();\ndecrypt.setPrivateKey('-----BEGIN RSA PRIVATE KEY-----MIICXAIBAAKBgQC1QQRl0HlrVv6kGqhgonD6A9SU6ZJpnEN+Q0blT/ue6Ndt97WRfxtSAs0QoquTreaDtfC4RRX4o+CU6BTuHLUm+eSvxZS9TzbwoYZq7ObbQAZAY+SYDgAA5PHf1wNN20dGMFFgVS/y0ZWvv1UNa2laEz0I8Vmr5ZlzIn88GkmSiQIDAQABAoGBAKYDKP4AFlXkVlMEP5hS8FtuSrUhwgKNJ5xsDnFV8sc3yKlmKp1a6DETc7N66t/Wdb3JVPPSAy+7GaYJc7IsBRZgVqhrjiYiTO3ZvJv3nwAT5snCoZrDqlFzNhR8zvUiyAfGD1pExBKLZKNH826dpfoKD2fYlBVOjz6i6dTKBvCJAkEA/GtL6q1JgGhGLOUenFveqOHJKUydBAk/3jLZksQqIaVxoB+jRQNOZjeSO9er0fxgI2kh0NnfXEvH+v326WxjBwJBALfTRar040v71GJq1m8eFxADIiPDNh5JD2yb71FtYzH9J5/d8SUHI/CUFoROOhxr3DpagmrnTn28H0088vubKe8CQDKMOhOwx/tS5lqvN0YQj7I6JNKEaR0ZzRRuEmv1pIpAW1S5gTScyOJnVn1tXxcZ9xagQwlT2ArfkhiNKxjrf5kCQAwBSDN5+r4jnCMxRv/Kv0bUbY5YWVhw/QjixiZTNn81QTk3jWAVr0su4KmTUkg44xEMiCfjI0Ui3Ah3SocUAxECQAmHCjy8WPjhJN8y0MXSX05OyPTtysrdFzm1pwZNm/tWnhW7GvYQpvE/iAcNrNNb5k17fCImJLH5gbdvJJmCWRk=-----END RSA PRIVATE KEY-----');\nconst plain = decrypt.decrypt(cipher);\nconsole.log(plain);","lang":"typescript","description":"Demonstrates RSA encryption and decryption using JSEncrypt with public and private PEM keys."},"warnings":[{"fix":"Convert PKCS#8 keys to PKCS#1 using openssl rsa -in key.pem -out pkcs1.pem","message":"Private key must be in PKCS#1 PEM format (RSA PRIVATE KEY), not PKCS#8 (PRIVATE KEY).","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Check the return value: if (decrypted === false) { /* handle error */ }","message":"Decrypt method may return false if the encrypted string is invalid or key does not match.","severity":"gotcha","affected_versions":">=1.0.0"},{"fix":"Use ciphertext as-is for Base64; if you need hex, convert via Buffer.","message":"Encrypted output is Base64-encoded, not raw binary. Do not assume hex.","severity":"gotcha","affected_versions":">=1.0.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"Use const JSEncrypt = require('jsencrypt-node').default;","cause":"Using CommonJS require without .default","error":"Error: JSEncrypt is not a constructor"},{"fix":"Ensure the PEM string is correct and includes BEGIN/END lines with no extra whitespace.","cause":"setPublicKey or setPrivateKey called with invalid PEM or not called at all","error":"TypeError: this.key is undefined"},{"fix":"Verify the key matches the encryption key and the ciphertext is valid Base64.","cause":"Decrypt method returns false when decryption fails (e.g., wrong key, corrupted ciphertext)","error":"false"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}