Java AES шифрует всю строку - PullRequest
       4

Java AES шифрует всю строку

3 голосов
/ 16 октября 2011

Как я могу зашифровать всю строку с AES. Приведенный ниже код шифрует только первый распознаваемый пробел :(. Как я могу это исправить? Спасибо

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 О, Боже, я не могу поверить в это, как я мог пропустить это :(, потому что мой сканер был следующим, а не nextLine ... как это смущало меня весь день, и только сейчас я действительно подумал об этом. Проблема решена :) Спасибо всем :)

1 Ответ

6 голосов
/ 16 октября 2011

Я не вижу ничего плохого в вашем коде, кроме попытки напечатать произвольный byte[] с использованием new String(byte[]). Попробуйте это для размера:

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);
}

Какие отпечатки:

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]

Я думаю, что мы все можем согласиться с тем, что это два разных байтовых массива.

...