powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / AES example
3 сообщений из 3, страница 1 из 1
AES example
    #37854328
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разбираюсь с примером - http://java.sun.com/developer/technicalArticles/Security/AES/AES_v1.html

Когда encrypt и decrypt в одном методе, то все работает.
Разбиваю на два метода:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import java.io.*;

/**
 * This program generates a AES key, retrieves its raw bytes, and then
 * reinstantiates a AES key from the key bytes. The reinstantiated key is used
 * to initialize a AES cipher for encryption and decryption.
 */

public class AES {

	/**
	 * Turns array of bytes into string
	 * 
	 * @param buf
	 *            Array of bytes to convert to hex string
	 * @return Generated hex string
	 */
	
	// static SecretKeySpec skeySpec = null;
	
	public static String asHex(byte buf[]) {
		StringBuffer strbuf = new StringBuffer(buf.length * 2);
		int i;
		for (i = 0; i < buf.length; i++) {
			if (((int) buf[i] & 0xff) < 0x10)
				strbuf.append("0");
			strbuf.append(Long.toString((int) buf[i] & 0xff));
		}
		return strbuf.toString();
	}

	public static byte[] encrypt_AES(String message) throws Exception {
		byte[] encrypted_text = null;

		KeyGenerator kgen = KeyGenerator.getInstance("AES");
		kgen.init(128); // 192 and 256 bits may not be available

		// Generate the secret key specs.
		SecretKey skey = kgen.generateKey();
		byte[] raw = skey.getEncoded();

		SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
		System.out.println(skeySpec);
		// Instantiate the cipher
		Cipher cipher = Cipher.getInstance("AES");
		cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
		encrypted_text = cipher.doFinal((message).getBytes());
		return encrypted_text;
	}

	public static String decrypt_AES(byte[] encrypted_text) throws Exception {
		String decrypted_text = null;
		KeyGenerator kgen = KeyGenerator.getInstance("AES");
		kgen.init(128); // 192 and 256 bits may not be available
		// Generate the secret key specs.
		
		SecretKey skey = kgen.generateKey();
		byte[] raw = skey.getEncoded();
		SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
		Cipher cipher = Cipher.getInstance("AES");
		
		cipher.init(Cipher.DECRYPT_MODE, skeySpec);
		byte[] original = cipher.doFinal(encrypted_text);
		// decrypted_text = new String(original);
		return decrypted_text;
	}

	public static void main(String[] args) throws Exception {

		String message = "TEST";

		byte[] test_byte = encrypt_AES(message);
		System.out.println(asHex(test_byte));
		
		String test_string = decrypt_AES(test_byte);
		System.out.println(test_string);
	}
}



Получаю ошибку:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
javax.crypto.spec.SecretKeySpec@17276
10167102211157604819423021711420307559149
Exception in thread "main" javax.crypto.BadPaddingException: Given final block not properly padded
	at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:811)
	at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:676)
	at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:313)
	at javax.crypto.Cipher.doFinal(Cipher.java:2086)
	at AES.decrypt_AES(AES.java:66)
	at AES.main(AES.java:78)
...
Рейтинг: 0 / 0
AES example
    #37854435
Фотография 1024
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
AES example
    #37854453
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1024,
Спасибо
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / AES example
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]