· 6 years ago · Apr 22, 2019, 08:44 PM
1public class Main {
2 public static void main(String[] args) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException {
3 String str = "Сравнение алгоритмов ÑˆÐ¸Ñ„Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ AES и RSA в Java"; // Ñтрока открытого текÑта
4
5 // Ð˜Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð¸ наÑтройка параметров шифра
6 Cipher cipher = Cipher.getInstance("AES");
7
8 KeyGenerator kGen = KeyGenerator.getInstance("AES");
9 kGen.init(256); // задание размера ключа
10 SecretKey key = kGen.generateKey(); // Ð³ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ Ñлучайного ключа
11 cipher.init(Cipher.ENCRYPT_MODE, key); // Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð° шифрование Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼ ключом
12 byte[] bytes = cipher.doFinal(str.getBytes()); // шифрование Ñтроки str
13
14 System.out.println("Открытый текÑÑ‚: " + str); // вывод Ñтроки
15 System.out.print("Шифр текÑÑ‚: ");
16 for (byte b : bytes) { // побайтовый вывод зашифрованной Ñтроки
17 System.out.print(b);
18 }
19 System.out.println();
20
21 // Дешифрование
22 Cipher decriptCipher = Cipher.getInstance("AES");
23 decriptCipher.init(Cipher.DECRYPT_MODE, key); // Ð°ÐºÑ‚Ð¸Ð²Ð°Ñ†Ð¸Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ð° дешифрование Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñ‹Ð¼ ключом
24 byte[] decrBytes = decriptCipher.doFinal(bytes); // дешифрование bytes
25 System.out.println("РаÑшифрованный текÑÑ‚: " + new String(decrBytes)); // вывод раÑшифрованной Ñтроки
26 }
27}