Bouncycastle RSAEngine not decrypting ciphered key correctly
Hi,
I'm trying to implement a system where I'm using BC's RSAEngine() to encode a symmtric key of 128bits. Now when I create a new RSAEngine() object to simulate my receiver, who will decrypt the ciphered key, the output key is 128bytes, instead of 16nytes. I'm quite confused as to why. my code is below:
/* generate key pair */
RSAKeyPairGenerator kg = new RSAKeyPairGenerator();
kg.init(new RSAKeyGenerationParameters(BigInteger.valueOf(0x11),sr,1024,25));
AsymmetricCipherKeyPair pair = kg.generateKeyPair();
/* generate symmetric key */
KeyGenerator keygen = KeyGenerator.getInstance("AES","BC");
keygen.init(128,sr);
Key sKey = keygen.generateKey();
RSAEngine eng = new RSAEngine();
eng.init(true,pair.getPublic());
byte[] ckey = eng.processBlock(sKey.getEncoded(),0,sKey.getEncoded().length);
String keyFile = "res//ckey.txt";
BufferedWriter fr = new BufferedWriter(new FileWriter(keyFile));
String s = Utils.toHex(ckey);
fr.write(s);
fr.close();
keyFile = "res//skey.txt";
fr = new BufferedWriter(new FileWriter(keyFile));
s = Utils.toHex(sKey.getEncoded());
fr.write(s);
fr.close();
keyFile = "res//pkey.txt";
fr = new BufferedWriter(new FileWriter(keyFile));
fr.write(param.getModulus().toString(16) + "\n");
fr.write(param.getPublicExponent().toString(16) + "\n");
fr.write(param.getExponent().toString(16) + "\n");
fr.write(param.getP().toString(16) + "\n");
fr.write(param.getQ().toString(16) + "\n");
fr.write(param.getDP().toString(16) + "\n");
fr.write(param.getDQ().toString(16) + "\n");
fr.write(param.getQInv().toString(16) + "\n");
fr.close();
BufferedReader f = new BufferedReader(new FileReader("res//pkey.txt"));
BigInteger mod = new BigInteger(f.readLine(),16);
BigInteger pubExp = new BigInteger(f.readLine(),16);
BigInteger exp = new BigInteger(f.readLine(),16);
BigInteger p = new BigInteger(f.readLine(),16);
BigInteger q = new BigInteger(f.readLine(),16);
BigInteger dp = new BigInteger(f.readLine(),16);
BigInteger dq = new BigInteger(f.readLine(),16);
BigInteger qInv = new BigInteger(f.readLine(),16);
s = f.readLine();
f.close();
RSAPrivateCrtKeyParameters par = new RSAPrivateCrtKeyParameters(mod,pubExp,exp,p,q,dp,dq,qInv);
f = new BufferedReader(new FileReader("res//ckey.txt"));
byte[] tmp = Utils.hexToBytes(f.readLine());
f.close();
System.out.println(tmp.length);
RSAEngine e = new RSAEngine();
e.init(false,par);
byte[] t = eng.processBlock(tmp,0,tmp.length);
System.out.println("KEY: " + t.length);

