I have a php code that will encrypt data with private key and I want to decrypt that data on client side with public key. Many JavaScript libraries only supports decrypt with private key. Encryption with public key and decryption with private key is working but vice versa not working.
Is there a way to decrypt with public key in JavaScript?
<html>
<head>
<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
<script src="https://kjur.github.io/jsrsasign/jsrsasign-latest-all-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jsencrypt/3.0.0/jsencrypt.min.js"></script>
</head>
</head>
<body>
<div class="" id= "canvas"></div>
<script>
// Create a new RSA key pair
const privatekey = '-----BEGIN PRIVATE KEY-----\nMIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDHMkHcZBWMCEuZ\n9nOv9NISE0AePVca/jpmmQbBsV/XVdQLjb1TMBtxZNeVKu89lk7O6jhILVP7Hcxr\nOy9bcn31mMeG0XuY/ivWrUEwmz4nuLBqiG6N1rI2VLv0KCx4rV7yEHGL8nv0EL2y\n+8ISDUPuwtWM+nsh2AxEuUuqsTDEOLjtmJHIGz+RRibmdS5OzHMNtUS3PP+wsnuH\n9MW6bCX0Je1rm+Ksegdy/BbVAp2wpOTcAax2Rh4hWm21TYXK3OSa8KddiNC2ZXv9\npa0wf/PjeMOz9Qdy/ZSB/KraWjQBO+5JNvnHjzwAfmPKS52xzqIIa7Y31GwOEp7J\nHJJjgu6DAgMBAAECggEBALzLmnareWyelCEZ4C4eSViOXFAM7VkNKgcB9NByMBdl\nJrPIpG+LAgeof1fHOLdTleAxSCTIqXcxmATuNIVk75NuOXZDZ/TqulwfG9FY4kE9\noB9orffLTF+IUhgoV3YNRBcDlMsCiY8aquFQEnGPlxpeGY8j/L5oCcC9KsVeaY0f\nUwM4D2WYKsADum23FNk12qeWEZXqrGRflsGNji5RVXoJAQyDMYolh7dI2fLbjPqW\n45och3j0WOvs7x0oYIeiTqoeTlgweuOFfO2nYAGYp92YjQcJI4yAdWw17J3FLoS5\nbvBkHnF0/IoF7ep8UpWQV/ITbLTEs4EerkT5SRTzgckCgYEA/NKMT94mn4JtRVlP\nTi0/XX78TDpHW8xQNx2MW204u9wrYpi/XDhHLrrn7109NTj/iHl0aLtsCd/M0QAm\nCOM9JRSSpPBcriuT6JoRyYvwfeiZaPMeNgp/oluP37G2JxbR0sIU1prXjDRDDrYP\nl6CbOvhHdOpKGNZ6cZaLqtnLSAUCgYEAybMrAjxaJmsqD/TT3aYWgiEpJEpQmiHq\nj543cBFikF8g2rbzTL6tCbxIyZaEzDmYSXv54q1t45soJ+DWxIfD7KkaNwFMx7YD\nbAy8FApW5rHcQbvp09qH3tnbPT+Oe2b4pJsfMPiAfB+wHLNsDdcxS2HQSnwLXVX+\nN2UvzvYNyucCgYEArif3gbj9EBoPXZsk9yxSHvyvnW7z4vd+NklDe2NklnwW4sdn\n4oXd+wHDbW7kD/qghAluOAsLZE3nT/1zNeIbJ6ThU39DyLK6I5umLxkX5BPLQbFf\nmUhoHZZHKIfJe2nLxgvtwNtPKgSCQOsHGKMI63lF9/LAchWkqQRUV6/JyWUCgYEA\nikwXSUkoZv9Dr/0m5+ths4gZNZDfA1AODLtnN6gz9NnFJTIcUJrM+sfnAJH8LCux\nh3FCPXK8zjsspWs81zRf2n14RA7YHndmkUeKDhOo0jVR2KCIC4LjdqHZ+X0CrQpF\nolfaYzGAp5rynjtH85WBbzZ6Ixg6kpzL2h+/UCDWBDECgYBaqrlJQdL0MTkKWYmh\nx4na8uN2fAJg1bNHLrz525wjX43B4hDX1zl8puqGoKhwZRqbdJ3ESkdiuL5Jw6SH\nEBTu9QIUU0F/M+qThy8xxSFyhU91gJS3DZKLszM9EpDrlDBWkHgO0BDhL5ejxU1U\nYgFx+1dCJOKwMR7F+ue3Q1SRZA==\n-----END PRIVATE KEY-----\n';
const publickey = '-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxzJB3GQVjAhLmfZzr/TS\nEhNAHj1XGv46ZpkGwbFf11XUC429UzAbcWTXlSrvPZZOzuo4SC1T+x3MazsvW3J9\n9ZjHhtF7mP4r1q1BMJs+J7iwaohujdayNlS79CgseK1e8hBxi/J79BC9svvCEg1D\n7sLVjPp7IdgMRLlLqrEwxDi47ZiRyBs/kUYm5nUuTsxzDbVEtzz/sLJ7h/TFumwl\n9CXta5virHoHcvwW1QKdsKTk3AGsdkYeIVpttU2FytzkmvCnXYjQtmV7/aWtMH/z\n43jDs/UHcv2Ugfyq2lo0ATvuSTb5x488AH5jykudsc6iCGu2N9RsDhKeyRySY4Lu\ngwIDAQAB\n-----END PUBLIC KEY-----\n';
console.log('Private Key:\n', privatekey);
console.log('Public Key:\n', publickey);
const en = new JSEncrypt();
const dn = new JSEncrypt();
en.setPrivateKey(privatekey);
dn.setPublicKey(publickey);
// Data to be encrypted
const originalData = 'Stackoverflow';
// Encrypt the data
const encryptedData = en.encrypt(originalData);
console.log('Encrypted Data:', encryptedData);
// Decrypt the data
console.log('Encrypted Data:', encryptedData);
const decryptedData = dn.decrypt(encryptedData);
console.log('Decrypted Data:', decryptedData);
// Check if the decryption is successful
const decryptionSuccessful = decryptedData === originalData;
console.log('Decryption Successful:', decryptionSuccessful);
</script>
</body>
</html>