Communicate with encrypted parameters between Java and Delphi. If Delphi encrypts them, Java needs to decrypt them. But if I operate as below, Java will have an error... How should I change the Java sauce?
[ Delphi source (Encrypt) ]
var
Data: string;
begin
Data := Memo1.Text;
DCP_rijndael1.InitStr(Edt_Password.Text, TDCP_sha256);
DCP_rijndael1.EncryptCBC(Data[1],Data[1],Length(Data));
DCP_rijndael1.Burn;
Memo2.Text := Base64EncodeStr(Data);
end;
[ Delphi source (Decrypt) ]
var
Data: string;
begin
Data := Base64DecodeStr(Memo2.Text);
DCP_rijndael1.InitStr(Edt_Password.Text, TDCP_sha256);
DCP_rijndael1.DecryptCBC(Data[1],Data[1],Length(Data));
DCP_rijndael1.Burn;
Memo3.Text := Data;
end;
[Java source]
public static String Decrypt(String text, String key) throws Exception
{
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
byte[] keyBytes= new byte[16];
byte[] b= key.getBytes("UTF-8");
int len= b.length;
if (len > keyBytes.length) len = keyBytes.length;
System.arraycopy(b, 0, keyBytes, 0, len);
SecretKeySpec keySpec = new SecretKeySpec(keyBytes, "AES");
IvParameterSpec ivSpec = new IvParameterSpec(keyBytes);
cipher.init(Cipher.DECRYPT_MODE,keySpec,ivSpec);
sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();
byte [] results = cipher.doFinal(decoder.decodeBuffer(text));
return new String(results,"UTF-8");
}