1. #1
    Curahee Q's Avatar
    Registered
    07/12/07
    Location
    Hoogstraten
    Posts
    854
    iTrader
    0
    Mentioned
    0 Post(s)

    [JAVA] AES encryptie lijkt fout

    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!
    no votes  

  2. #2
    Curahee Q's Avatar
    Registered
    07/12/07
    Location
    Hoogstraten
    Posts
    854
    iTrader
    0
    Mentioned
    0 Post(s)
    Ik heb mijn fout gevonden.

    De website die de encryptie doet, en ook mijn C++ applicatie verwachtte de key niet in HEX formaat maar gewoon als string. In dit geval thisIsASecretKey en niet de hex waarde daarvan. Met deze aanpassing komen al de drie uitkomsten overeen met elkaar.
    no votes  

  3. #3
    Tyfius's Avatar
    Registered
    01/09/02
    Location
    Peutie
    Posts
    7,664
    iTrader
    0
    Mentioned
    4 Post(s)
    Reputation
    13/105
    Goed dat je het gevonden hebt.

    Ik ken er jammer genoeg te weinig van om het uit te zoeken, waar was wel geïntrigeerd door het probleem.
    Vanaf nu gaan we verder op BeyondGaming!
    In deze thread wordt uitgelegd hoe je jouw account kan migreren.
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in