Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> java crypto, метод doFinal выдает exception  
:(
    Опции темы
sergioK1
Дата 18.12.2012, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



вот пример кода (код не мой)

Код


   byte[] input = "   www.java2s.com ".getBytes("UTF-8");
            
            System.out.println(" size of block  : "+ input.length);
            byte[] keyBytes = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
               0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17 };

           // byte[] keyBytes=new byte[24];
            //keyBytes="12345678".getBytes();
            
            SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");
        
           Cipher cipher = Cipher.getInstance("AES/ECB/NoPadding");
        
            System.out.println("input text : " + new String(input));

            // encryption pass

            byte[] cipherText = new byte[input.length];
            cipher.init(Cipher.ENCRYPT_MODE, key);
            int ctLength = cipher.update(input, 0, input.length, cipherText, 0);
            
         //  ??
            ctLength += cipher.doFinal(cipherText, ctLength);
            System.out.println("cipher text: " + new String(cipherText) + " bytes: " + ctLength);

            // decryption pass

            byte[] plainText = new byte[ctLength];
            cipher.init(Cipher.DECRYPT_MODE, key);
            int ptLength = cipher.update(cipherText, 0, ctLength, plainText, 0);
            ptLength += cipher.doFinal(plainText, ptLength);
            System.out.println("plain text : " + new String(plainText) + " bytes: " + ptLength);


ругается на Exception in thread "main" javax.crypto.IllegalBlockSizeException: Input length not multiple of 16 bytes
    at com.sun.crypto.provider.SunJCE_f.a(DashoA13*..)
    at com.sun.crypto.provider.SunJCE_f.b(DashoA13*..)
    at com.sun.crypto.provider.AESCipher.engineDoFinal(DashoA13*..)
    at javax.crypto.Cipher.doFinal(DashoA13*..)
    at com.SecretKey.main(SecretKey.java:45)



вопрос что нужно сделать чтобы работало с любым текстом, а не только кратным 16, из документации я не понимаю что делает этот метод и для какой цели он нужен? если его убрать то исключения нет

вопрос что нужно сделать чтобы работало с любым текстом, а не только кратным 16, из документации я не понимаю что делает этот метод и для какой цели он нужен? если его убрать то исключения нет

с security столкнулся впервые
PM MAIL   Вверх
MisterCleric
Дата 18.12.2012, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 5
Всего: 38





--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
sergioK1
Дата 19.12.2012, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Цитата(MisterCleric @ 18.12.2012,  21:27)
You need padding: http://stackoverflow.com/questions/1093506...strings-in-java
And a bit theory  smilehttp://en.wikipedia.org/wiki/Block_cipher_modes_of_operation

c IV разобрался, если кому интересно завтра на работе выложу код,
но есть другая проблема хочеться чтобы keyBytes мог быть 256, 512 и  1024,

Код

                    byte[] keyBytes=new byte[256];
                    SecretKeySpec key = new SecretKeySpec(keyBytes, "AES");


валиться,

в этой версии решено (если не найдеться способ) оставить так , а хочеться его найти,
у меня такое ошущении,  что java, у меня 1.6.30, это не реализует
и возможно это либо есть в версии 7, но семерку архитекты пока не хотят внедрять, 
либо есть платные либы, какие?  JCA от оракла отпадает, т,к заказчик хочет FIPS 140-2, 
какие есть варианты, крайний срок еще день, от силы два, т,е нужны не ссылки на теорию а пример рабочего кода ,
с меня бутылка  smile 
PM MAIL   Вверх
MisterCleric
Дата 19.12.2012, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1043
Регистрация: 16.2.2006
Где: Харьков, Украина

Репутация: 5
Всего: 38



Привет
А то, что гугл говорит, не устраивает: https://www.google.com.ua/search?q=java+fips+140-2 ?


--------------------
ПРИШЕЛ, УВИДЕЛ - ПЕРЕПИСАЛ...
PM MAIL ICQ   Вверх
sergioK1
Дата 19.12.2012, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Цитата(MisterCleric @ 19.12.2012,  15:35)
Привет
А то, что гугл говорит, не устраивает: https://www.google.com.ua/search?q=java+fips+140-2 ?

да это то не проблема 

у меня есть
Код



  private byte[] key=new byte[16];
  spec = new SecretKeySpec(key, KEY_ALGORITHM);

а хочется поддерживать больший размер ключа 


все что не 16 , (32,64,....1024) валиться
Код

[color=red]java.security.InvalidKeyException: Illegal key size
    at javax.crypto.Cipher.a(DashoA13*..)
    at javax.crypto.Cipher.init(DashoA13*..)
    at javax.crypto.Cipher.init(DashoA13*..)
    at com.ccih.base.crypto.CryptographyAESImpl.encrypt(CryptographyAESImpl.java:110)
    at com.ccih.base.crypto.CryptographyAESImpl.main(CryptographyAESImpl.java:57)[/color]


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0693 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.