Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / AES example / 3 сообщений из 3, страница 1 из 1
26.06.2012, 09:18:52
    #37854328
Максим Н
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AES example
Разбираюсь с примером - 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
26.06.2012, 10:24:04
    #37854435
1024
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AES example
...
Рейтинг: 0 / 0
26.06.2012, 10:36:03
    #37854453
Максим Н
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
AES example
1024,
Спасибо
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / AES example / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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