forge
forge copied to clipboard
Use forge rsa public key for javascript encryption and java decryption
I have this code:
let pubKey = forge.pki.publicKeyFromPem(environment.publicKey);
let encryptText = pubKey.encrypt(forge.util.encodeUtf8("Some text"));
If i do that, the decryption work:
let pk = forge.pki.privateKeyFromPem(environment.privateKey);
let plain = forge.util.decodeUtf8(pk.decrypt(encryptText)); //<-- This text is: "Some text"
But if i send the encrypted text to Java ( Spring Boot backend ):
public String decryptMessage( String encryptText ){
// Load private key from P12
ClassPathResource pkcs12 = new ClassPathResource("ssl/store.p12"); //<-- The PKCS12 with the private and public key
KeyStore keystore = KeyStore.getInstance("PKCS12");
keystore.load(pkcs12.getInputStream(), p12Password.toCharArray());
String alias = (String)keystore.aliases().nextElement();
PrivateKey privateKey = (PrivateKey) keystore.getKey(alias, p12Password.toCharArray());
// Decrypt
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, privateKey);
byte[] doFinal = cipher.doFinal(encryptText.getBytes()); //<-- Encrypted text generated with forge in javascript
String plainText = new String(cipher.doFinal(Base64.decodeBase64(doFinal)), "UTF-8");
return plainText;
}
The java code throw: javax.crypto.IllegalBlockSizeException: Data must not be longer than 256 bytes This should work. If I encrypt a text with a public key using node-forge, is it possible to decrypt it from java?
This is my Public and Private key that i used:
export const environment = {
publicKey: `-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxXSpkCmmHG+S4vBIkslI
NJJyVvekc+kmHO8qNI3fScmYLVWrs1ZxXF0qR1id/ZCPyvd88MZWxomRyHNNEbz4
dcbOZ0m6Q52FeU/Xny0ljAx0VxfVdIX2VxL4WwcNbANxrHa+xK+D2MyV8QdxTyku
C1SwXan8FvEmpzvtPKP44vyf3NA2zHCfEQ7/93tEelKmt+yK8vhWIiKbKhufKJDu
C3sw0KWBeFNBkfweKxZR+NKj8e2ZB/WABahUuED1k3DAOtkjNwMe6xVQVaDjPT9Y
78w8Gm3tZtENS+WGCHnTl3tgSWZvgLzObZzy1/VXWyTHcGdOTUyrtI07HbRYcAn3
CQIDAQAB
-----END PUBLIC KEY-----
`,
privateKey: `-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDFdKmQKaYcb5Li
8EiSyUg0knJW96Rz6SYc7yo0jd9JyZgtVauzVnFcXSpHWJ39kI/K93zwxlbGiZHI
c00RvPh1xs5nSbpDnYV5T9efLSWMDHRXF9V0hfZXEvhbBw1sA3Gsdr7Er4PYzJXx
B3FPKS4LVLBdqfwW8SanO+08o/ji/J/c0DbMcJ8RDv/3e0R6Uqa37Iry+FYiIpsq
G58okO4LezDQpYF4U0GR/B4rFlH40qPx7ZkH9YAFqFS4QPWTcMA62SM3Ax7rFVBV
oOM9P1jvzDwabe1m0Q1L5YYIedOXe2BJZm+AvM5tnPLX9VdbJMdwZ05NTKu0jTsd
tFhwCfcJAgMBAAECggEBAKeJqEH5BMfF57UEuh9KCCkLRVcDQpdS8RLF32K+KgJa
ufNlaI1/QCplpnTo/Qzj9w35VhqZv5EvsvGI25C8bXjJWeKLzS6H3nOjSkn2LZCa
FLC9OVFoRS92miHqZvoKJg52psEOR2nRlTvw27SWNUpJ7mdaztnMfcaR82ZrnsdA
ovRepr5hURRqEQiRvzo+1kr51hd0WlSiDeH7CXvyavJ92qsZ92ICL/AN9GQoD88H
w5rF8CSr8IYxDGD7tBTwL6lvMbT6YKDX2LXjv2lezBDRLWuJ01qzXOkNE9HuqZm5
C79yP8WHHLoVpTztYPjMx/RMvTTD5u1ux2l7ddQrA00CgYEA5CkOTbg1AcamQ74K
ft/QxoFoA2qobQzs/oFpao1LaetXvnKDvg8EThYEqKwQGITUj9/dWh96LYTMqZXJ
B3nMTNzpmeDl5Bli6Cs2h/ey0hf9ZKO3IiN4bmUCSehQolTv8r/EmrsfJbngrNPt
WAFnanFBbJCSmB2zama/5G+4YpcCgYEA3Yx/pM0FoP5JIOe5pmUUplJjW/PAirmH
YZMPFXB2O7ye0lGpe96RS7pBdRcuKqbTBqOUmoKu+ttXhlnDeiNmrMlXbtYjnMM6
0oEHLnL7dNSSB6Eb1SwokGhNp8sN00qSEaPh9vzpcJ+BQbfDTQwHnjoFoCxOoHBl
rXLnLdsWx18CgYAH1/V67IM9/WNH3uejdvRJbrdxrp/9p70Z/r7t/8+A46tPi8ZF
qWR/frhISCoBfceE7rBAYeakW/VhOxn/HMvONKX/OUEN92V0D9A/Gl/WYya95/bq
wIdqXCSY/9iNzBe3o6oRm681b89ugZaeOOYiPaR/I/U2L4c0eDXOl5yiHwKBgAY1
wvoumQLLPeeDN0v3t112H7zbF0GMM8RDZ//U2CuSfO0uRs7nDTGPNfh/PtcJOA8O
lMLD+P2lGk30xCrvRRiAyEeeDv985XAzF61woaXDs5gtJueRxk1N7ydN5MRQacm+
yz2uFykF/4yFBx9ov+nqfG/h7g5HOEJlXx+E7Z2HAoGBAJ7NnodlEb9/+X8F+IRF
/H2uLUk1bmiZVO1OafRwhrj/UF/NqIrK+GoaM7D/JwI6NybXlIXCjlaBzP03X0gF
TCvTR2Bf6ja9D7WQfEsAQTES4xtWoyt/qNk5TLRwa2iRUwD8tFmAGsChi9VcJ5+6
ulo5t31k0q7/Ea9f7IsOFxmc
-----END PRIVATE KEY-----
`
};