Dag iedereen
Ik ben bezig met een applicatie om te zetten van Java naar C++. De Java applicatie maakt gebruik van AES encryptie in ECB mode.
Ik heb hieronder even een sample toegevoegd
data: abcd
key: 746869734973415365637265744b6579
De Java code ziet er als volgt uit:
Code:
public class StartUp {
public static void main(String[] args) throws Exception {
String data = "abcd";
String key = "746869734973415365637265744b6579";
byte[] arrayOfByte1 = hexToByte(key);
byte[] dataByte = data.toString().getBytes("UTF-8");
SecretKeySpec localSecretKeySpec = new SecretKeySpec(arrayOfByte1, "AES");
Cipher localCipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
localCipher.init(Cipher.ENCRYPT_MODE, localSecretKeySpec);
byte[] cip = localCipher.doFinal(dataByte);
StringBuilder buf = new StringBuilder();
for(int i=0; i<cip.length; i++) {
buf.append(Integer.toHexString(cip[i] & 0xFF));
}
System.out.println(buf.toString());
}
public static byte[] hexToByte(String paramString)
{
int i = paramString.length();
byte[] arrayOfByte = new byte[i / 2];
for (int j = 0; j < i; j += 2)
arrayOfByte[(j / 2)] = (byte)((Character.digit(paramString.charAt(j), 16) << 4) + Character.digit(paramString.charAt(j + 1), 16));
return arrayOfByte;
}
}
Als ik dit uitvoer dan krijg ik als output (hex): d2e6a5d9e17fc5538e6aea2d644ecb
Wanneer ik echter in C++ de AES encryptie toepas krijg ik dezelfde output als dat ik het via een website doe (AES Encryption ? Easily encrypt or decrypt strings or files).
Die output is: 0cef7540c3a7ea4d37accd6a02f9e979
Zie ik nu iets over het hoofd of is er iets mis met de implementatie in Java
? Wat me straf zou lijken dus mijn gedacht is dat ik iets mis doe maar ik zie niet wat.
Als ik de Java output wil decrypten op die website, dan geeft die website ook de fout: Decryption failed. Provided encrypted text is not valid.
Alvast bedankt!