Java AES Encrypt Entire String
10,063
I don't see anything wrong with your code except trying to print an arbitrary byte[]
using new String(byte[])
. Try this on for size:
public static byte[] encrypt(String message) throws Exception
{
String salt = "1111111111111111";
SecretKeySpec key = new SecretKeySpec(salt.getBytes(), "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding", "SunJCE");
cipher.init(Cipher.ENCRYPT_MODE, key);
return cipher.doFinal(message.getBytes());
}
public static void main (String[] args) throws Exception
{
String hello = Arrays.toString(encrypt("hello"));
System.out.println("hello:" + hello);
String helloWorld = Arrays.toString(encrypt("hello world"));
System.out.println("hello world:" + helloWorld);
}
Which prints:
hello:[115, -73, -46, -121, 36, -106, -99, 100, 103, -24, -40, -38, 113, -8, 40, -57]
hello world:[5, 88, -31, 115, 4, 48, -75, 44, 83, 21, 105, -67, 78, -53, -13, -28]
I think we can all agree that those are two different byte arrays.
Comments
-
Cody almost 2 years
How can I encrypt an entire string with AES. The code that I have below only encrypts up to the first space recognized :(. How can I fix this? Thanks
SecretKeySpec key = new SecretKeySpec(salt.getBytes(), "AES"); Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding", "SunJCE"); cipher.init(Cipher.ENCRYPT_MODE, key); String result = new String(cipher.doFinal(message.getBytes())); System.out.println("Encrypted:" + result);
EDIT OMG I CANT BELIEVE THIS, HOW COULD I MISS THIS :( ITS BECAUSE MY SCANNER WAS TAKING next instead of nextLine... how embarrassing this bugged me all day and only now did i actually think about checking that. Problem solved :) Thanks everyone
-
Cody over 12 yearsexample the encrypted "hello world" and "hello" are both "sÀÊç$û?dgÞÏ┌q°(Ã" when the salt is "1111111111111111"
-
Matt Ball over 12 yearsDon't treat encrypted string data as a string - it's not. If you want to get a human-readable representation, convert the string to base64 or a hex string, then print that.
-
Cody over 12 yearsis that the reason why im missing the rest of the message? and it doesnt affect me much if it's human readeble or not, in fact id probably prefer it more if it weren't :)
-
kdgregory over 12 years@Matt - d'oh. OK, I'll delete my comment and +1 your answer.
-
CodesInChaos over 11 yearsDon't use ECB mode. It's very weak. At least use CBC, or preferably an authenticated mode.
-