public String sendDetails(String password, byte[] phash, String transactionID, byte[] spdata) throws RemoteException, NotBoundException, NoSuchAlgorithmException, NoSuchPaddingException, InvalidKeyException, IllegalBlockSizeException, BadPaddingException { Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.DECRYPT_MODE, privateKey); byte[] cipherData = cipher.doFinal(spdata); String x = new String(cipherData); String sp[] = new String[10]; StringTokenizer st = new StringTokenizer(x.toString(), "|"); int count = 0; StringBuilder message = new StringBuilder(); while (st.hasMoreTokens()) { sp[count] = st.nextToken(); count++; } String decodemessgae = new String(); if (securePassword.equals(sp[1]) && serviceProviderId.equals(sp[0].toString().trim())) { System.out.println("hellosubba"); if (transactionID.equals(transactionDetails[0].toString())) { int qrData[] = new int[16]; for (int i = 0; i < password.length(); i++) { message.append(password.charAt(i) ^ bioTemplate.charAt(i)); } for (int i = 0; i < message.length(); i++) { if (message.charAt(i) == '1') { decodemessgae += '0'; } else decodemessgae += '1'; } int start = 56, end = 63; for (int i = 0; i < 16; i++) { qrData[i] = Integer.parseInt(decodemessgae.substring(start, end), 2); start += 64; end += 64; } RsDecode dec = new RsDecode(16); int r = dec.decode(qrData); System.out.println("r=" + r); System.out.println("qrData=" + java.util.Arrays.toString(qrData)); int[] MM = new int[qrData.length + 16]; System.arraycopy(qrData, 0, MM, 0, qrData.length); RsEncode enc = new RsEncode(16); enc.encode(MM); System.out.println("qrData=" + java.util.Arrays.toString(MM)); } } else { message.append("unkonw third party user"); } return message.toString(); }