RSA encryption with NodeJS and Decryption in Java throwing BadPaddingException.
I issue is I cannot touch Java code as it is legacy code written by another team.
The Java code is another server code which is throwing BadPaddingException:
My NodeJS code is :
encryptFromKey(toEncrypt: string) {
const absolutePath = path.resolve('./src/keys/pub_key.key');
var publicKey = fs.readFileSync(absolutePath);
const buffer = Buffer.from(toEncrypt);
const keyObject = {
key: publicKey,
padding: constants.RSA_PKCS1_PADDING,
};
const encrypted = publicEncrypt(keyObject, buffer);
return encrypted.toString('base64');
}
The java decryption code is :
public class Main {
public static void main(String[] args) throws Exception {
String aesKeyEnc = "Encrypted Data";
System.out.println("aesKeyEnc -- " + aesKeyEnc);
byte[] aesKey = rsaDecrypt(Base64.decodeBase64(aesKeyEnc), getPrivateKey());
System.out.println("AES Key -- " + aesKey.length);
}
public static PrivateKey getPrivateKey() throws NoSuchAlgorithmException, InvalidKeySpecException {
PrivateKey privateKey = null;
String priKey2 = "MIIEoQIBAAKCAQBT/jDz6mAMBtqgZDfzZZjtWowkMkgj1CCRAJuqGN9a5eFanrFP\n"+
"9NQA6s3Ankp2g4sBavB5JaOR4/kJSJ54naaxqe2LctsXH6y/xZ3Y1XDDt+6oeU94\n"+
"EghoPAryAc9SNx1WFMeq0ihRu9wi+SeswUPS82l4L/5YoYsn52Cm17vnALhnOE08\n"+
"5aFEf3dUN+ol1Yw41mvvx8IZR+H4FAUQlUgZVCKsorHbC3bOYjO7mBN6QVtTly8z\n"+
"/PV3DgTYkKN4zWgsif/S3bDPhoxocswtYHi8azUk56VgGwLNsuBZQ7YkWqE9WwQq\n"+
"JQynBg1PFkTao0bIHGVzq0lo0I1c3IVrk9tbAgMBAAECggEAS14hIQ3jZ4dS8G9d\n"+
"QVueEQWaEPTJhNTY8CRCiixNZ6w1PfJ+GsgO4E/RlpCzMosw1XHXHG4oy0Vsduch\n"+
"xAt6w5s+W04RyDsU8PPrguFrkUPftG8+XviXcKjIDYaQOS7ZdR+qVt7DbSwMCZnW\n"+
"/w5gxM7EiiNOsMssKf9V3ABjTJFw3PqQ0ogTa3FylWIq5D8cJGIZS3thHedSYBuK\n"+
"CkNlJKsyMNpmFxSU1hFJdulFBfzBOjFcBe8zRDH9jWQ16yNHiUkkBVHfaCECL8lV\n"+
"p5gd4+mP4Y3DBUT42nwFB2z+qQAaZbA+HazbO7+Zp4R2d5XQ5hnS/5rfFI4o8BVx\n"+
"7siGyQKBgQClOwhVQ7t/ln4PiZjio3RbpjqOWLMYTgQH6u2f1A2LL027wlEA9CRh\n"+
"mUq+rcsdREPFaDWAlrIktdHd28YvFdLCYw+qRaxPWPtXodJuDJn1uT4bJa21vG+r\n"+
"TN5I0iimjTDNQAyXpgX3Ces00jTODg7ALjjeD+0LnFmXqZf41RkgBQKBgQCCImq4\n"+
"eg0HzUiys9Znzh309R8JzsOjch4qKXAGdXxkROobTu2gyeGTjXGxYUiW1/4M7Hr6\n"+
"TFxJ1WpXUdPmWAMwpwKtAXsjeSC2PdvkSTWMHWgfmnoUDc0JBFm+/fze9M+bFcXl\n"+
"BJ2aQPcbuQvNtyOqlu8kkLMOE6kdjqxDv6nL3wKBgC+QiNuSvf0Co5NxdtN3Xl2r\n"+
"wpuLqTLL8pkc5f7mmmeA3I26aHsvzPFToZK2kQwBxMilMRGtT+cFeD63r5uKWrue\n"+
"rLnFiM7mvKQDb4JCmmeERf6moBT7A+J6JFsuNImNh4jucTGOl5UAA/eWs6DFpzVn\n"+
"mPND/mcjQR9JsPfu0GbJAoGABidQepay5QqNBH5ChjgV7I5mwFT5pVHxITdCZ9vI\n"+
"XQlxNIdf7zl8pDiNBsE96HwgNEY+bnWL66Xe2HAzH/JLfFJ5aurmAsBojpWQP1RC\n"+
"5vRBBzWLzkT0zBdbkw95lKVo58F40SKNvUyTIsl2SGz/j8KBXm5FOUYuugoUFUQL\n"+
"6GsCgYASQ+Fib0IqHYoZWffb+UfZfbDiyTY//fsorQUIK55PlrrcZoNMhkLpYZrG\n"+
"W39ET1fAW8jKiTWaExvdNeR+RUBirlsheTrufM5filSs0UJi9srxE2atY4eSJHhg\n"+
"cIIbKMYFDQCPbS8uQuvIvmLXPYuKMyXhgPDehSTcVzDvJQlWJQ==\n";
PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(Base64.decodeBase64(priKey.getBytes()));
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
privateKey = keyFactory.generatePrivate(keySpec);
return privateKey;
}
private static byte[] rsaDecrypt(byte[] data, Key key) throws NoSuchPaddingException, NoSuchAlgorithmException,
InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
Cipher cipher = Cipher.getInstance("RSA/ECB/PKCS1PADDING");
cipher.init(Cipher.DECRYPT_MODE, key);
return cipher.doFinal(data);
}
}
The public key in pub_key.key is :
-----BEGIN PUBLIC KEY-----
MIIBITANBgkqhkiG9w0BAQEFAAOCAQ4AMIIBCQKCAQBT/jDz6mAMBtqgZDfzZZjt
WowkMkgj1CCRAJuqGN9a5eFanrFP9NQA6s3Ankp2g4sBavB5JaOR4/kJSJ54naax
qe2LctsXH6y/xZ3Y1XDDt+6oeU94EghoPAryAc9SNx1WFMeq0ihRu9wi+SeswUPS
82l4L/5YoYsn52Cm17vnALhnOE085aFEf3dUN+ol1Yw41mvvx8IZR+H4FAUQlUgZ
VCKsorHbC3bOYjO7mBN6QVtTly8z/PV3DgTYkKN4zWgsif/S3bDPhoxocswtYHi8
azUk56VgGwLNsuBZQ7YkWqE9WwQqJQynBg1PFkTao0bIHGVzq0lo0I1c3IVrk9tb
AgMBAAE=
-----END PUBLIC KEY-----
The private key is :
-----BEGIN RSA PRIVATE KEY-----
MIIEoQIBAAKCAQBT/jDz6mAMBtqgZDfzZZjtWowkMkgj1CCRAJuqGN9a5eFanrFP
9NQA6s3Ankp2g4sBavB5JaOR4/kJSJ54naaxqe2LctsXH6y/xZ3Y1XDDt+6oeU94
EghoPAryAc9SNx1WFMeq0ihRu9wi+SeswUPS82l4L/5YoYsn52Cm17vnALhnOE08
5aFEf3dUN+ol1Yw41mvvx8IZR+H4FAUQlUgZVCKsorHbC3bOYjO7mBN6QVtTly8z
/PV3DgTYkKN4zWgsif/S3bDPhoxocswtYHi8azUk56VgGwLNsuBZQ7YkWqE9WwQq
JQynBg1PFkTao0bIHGVzq0lo0I1c3IVrk9tbAgMBAAECggEAS14hIQ3jZ4dS8G9d
QVueEQWaEPTJhNTY8CRCiixNZ6w1PfJ+GsgO4E/RlpCzMosw1XHXHG4oy0Vsduch
xAt6w5s+W04RyDsU8PPrguFrkUPftG8+XviXcKjIDYaQOS7ZdR+qVt7DbSwMCZnW
/w5gxM7EiiNOsMssKf9V3ABjTJFw3PqQ0ogTa3FylWIq5D8cJGIZS3thHedSYBuK
CkNlJKsyMNpmFxSU1hFJdulFBfzBOjFcBe8zRDH9jWQ16yNHiUkkBVHfaCECL8lV
p5gd4+mP4Y3DBUT42nwFB2z+qQAaZbA+HazbO7+Zp4R2d5XQ5hnS/5rfFI4o8BVx
7siGyQKBgQClOwhVQ7t/ln4PiZjio3RbpjqOWLMYTgQH6u2f1A2LL027wlEA9CRh
mUq+rcsdREPFaDWAlrIktdHd28YvFdLCYw+qRaxPWPtXodJuDJn1uT4bJa21vG+r
TN5I0iimjTDNQAyXpgX3Ces00jTODg7ALjjeD+0LnFmXqZf41RkgBQKBgQCCImq4
eg0HzUiys9Znzh309R8JzsOjch4qKXAGdXxkROobTu2gyeGTjXGxYUiW1/4M7Hr6
TFxJ1WpXUdPmWAMwpwKtAXsjeSC2PdvkSTWMHWgfmnoUDc0JBFm+/fze9M+bFcXl
BJ2aQPcbuQvNtyOqlu8kkLMOE6kdjqxDv6nL3wKBgC+QiNuSvf0Co5NxdtN3Xl2r
wpuLqTLL8pkc5f7mmmeA3I26aHsvzPFToZK2kQwBxMilMRGtT+cFeD63r5uKWrue
rLnFiM7mvKQDb4JCmmeERf6moBT7A+J6JFsuNImNh4jucTGOl5UAA/eWs6DFpzVn
mPND/mcjQR9JsPfu0GbJAoGABidQepay5QqNBH5ChjgV7I5mwFT5pVHxITdCZ9vI
XQlxNIdf7zl8pDiNBsE96HwgNEY+bnWL66Xe2HAzH/JLfFJ5aurmAsBojpWQP1RC
5vRBBzWLzkT0zBdbkw95lKVo58F40SKNvUyTIsl2SGz/j8KBXm5FOUYuugoUFUQL
6GsCgYASQ+Fib0IqHYoZWffb+UfZfbDiyTY//fsorQUIK55PlrrcZoNMhkLpYZrG
W39ET1fAW8jKiTWaExvdNeR+RUBirlsheTrufM5filSs0UJi9srxE2atY4eSJHhg
cIIbKMYFDQCPbS8uQuvIvmLXPYuKMyXhgPDehSTcVzDvJQlWJQ==
-----END RSA PRIVATE KEY-----
How can I fix this bad padding exception. I am not sure if this is encoding issue.