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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шифрование данных 
:(
    Опции темы
YuraDoc
Дата 30.3.2008, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 1.4.2006
Где: Zhytomir, Ukraine

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



На сервере шифруются файлы. На клиенте они дешефруются.
На сервере используется PHP и соответствующие библиотеки шифрования.
На клиенте Java апплет. Подскажите надежный метод шифрования(дешифрования), чтобы не нужно было в апплет включать какие-либо дополнительные пакеты.
Спасибо.
PM MAIL WWW ICQ Skype   Вверх
v2v
Дата 30.3.2008, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1620
Регистрация: 20.9.2006
Где: Киев

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



берёшь любой стандартный алгоритм шифрования.


--------------------
PM   Вверх
YuraDoc
Дата 30.3.2008, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 1.4.2006
Где: Zhytomir, Ukraine

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



Я имею ввиду есть ли в Java стандартные пакеты "криптографии" наподобии библиотек PHP?
PM MAIL WWW ICQ Skype   Вверх
Alexandr87
Дата 30.3.2008, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

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



а в гугле искать не пробовали?
http://java.sun.com/j2se/1.4.2/docs/guide/...CERefGuide.html


Это сообщение отредактировал(а) Alexandr87 - 30.3.2008, 17:24
PM Jabber   Вверх
barin_Student
Дата 31.3.2008, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 488
Регистрация: 10.8.2007
Где: Казахстан , Алмат ы

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



bouncycastle, то же куча алгоритмов , + код открытый....
ПС:
Александр87 :Казахстан, Алматы
В одном городе живем, и я 87... smile  smile 


Это сообщение отредактировал(а) barin_Student - 31.3.2008, 09:20


--------------------
Нехорошо блин!!!
PM MAIL   Вверх
YuraDoc
Дата 2.4.2008, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 1.4.2006
Где: Zhytomir, Ukraine

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



А как не генерить ключ, а просто его задать самому?
Вроде бы нашел:
Код

                key = "[key]**********************************************************************[/key]";
                SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
                pbeKeySpec = new PBEKeySpec(key.toCharArray());
                SecretKey pbeKey = keyFactory.generateSecret(pbeKeySpec);
                desCipher.init(Cipher.DECRYPT_MODE, pbeKey);
                String dec_hello = new String(desCipher.doFinal(buf.toString().getBytes()));


Мне просто необходимо по заданному ключу расшифровать текст.

Консоль выдает:
java.security.spec.InvalidKeySpecException: Inappropriate key specification
        at com.sun.crypto.provider.DESedeKeyFactory.engineGenerateSecret(DashoA13*..)
        at javax.crypto.SecretKeyFactory.generateSecret(DashoA13*..)
        at TripleDES.main(TripleDES.java:37)
Как мне быть?

Это сообщение отредактировал(а) YuraDoc - 2.4.2008, 20:24
PM MAIL WWW ICQ Skype   Вверх
Alexandr87
Дата 3.4.2008, 06:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

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



Код

        byte baKey[] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
        SecretKeySpec spec = new SecretKeySpec(baKey, "DES");
        SecretKey key = 
                SecretKeyFactory.getInstance("DES").generateSecret(spec);


Добавлено через 9 минут и 39 секунд
А в php ключ к алгоритму шифрования задается строкой? Если да, то вам нужно узнать как php преобразуется его все таки в нормальный ключ, представленный массивом байт.
PM Jabber   Вверх
YuraDoc
Дата 3.4.2008, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 1.4.2006
Где: Zhytomir, Ukraine

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



Функция шифрования:
Код

$key = "[key]**********************************************************************[/key]";
$encrypted = mcrypt_ecb (MCRYPT_3DES, $key, $input, MCRYPT_ENCRYPT);


Ключ $key задается точно такой-же длины как я указал, в строчном формате.
$input - входной текст.
$encrypted - зашифрованный текст.

Цитата

        byte baKey[] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08};
        SecretKeySpec spec = new SecretKeySpec(baKey, "DES");
        SecretKey key = 
                SecretKeyFactory.getInstance("DES").generateSecret(spec);

java.security.spec.InvalidKeySpecException: Inappropriate key specification
        at com.sun.crypto.provider.DESedeKeyFactory.engineGenerateSecret(DashoA13*..)
        at javax.crypto.SecretKeyFactory.generateSecret(DashoA13*..)
        at TripleDES1.main(TripleDES1.java:38)

Это сообщение отредактировал(а) YuraDoc - 3.4.2008, 12:50
PM MAIL WWW ICQ Skype   Вверх
Alexandr87
Дата 3.4.2008, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

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



YuraDoc, полностью TripleDES1 выложите

Это сообщение отредактировал(а) Alexandr87 - 3.4.2008, 13:17
PM Jabber   Вверх
YuraDoc
Дата 3.4.2008, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 1.4.2006
Где: Zhytomir, Ukraine

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



Код

public class TripleDES {
     public static void main(String[] args){
        {
            try {
                InputStream input = null;
                String key;
                PBEKeySpec pbeKeySpec;

                Cipher desCipher = Cipher.getInstance("DESede/ECB/PKCS5Padding");
                key = "[key]**********************************************************************[/key]"
                SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
                pbeKeySpec = new PBEKeySpec(key.toCharArray());
                SecretKey pbeKey = keyFactory.generateSecret(pbeKeySpec);
                StringBuffer buf = new StringBuffer();
                String fileName = "http://...";
                URLConnection conn = new URL(fileName).openConnection();
                input = conn.getInputStream();
                
                
                int c;

                while ((c = input.read()) != -1) {
                    buf.append(c);
                }
                input.close();

                desCipher.init(Cipher.DECRYPT_MODE, pbeKey);
                String dec_hello = new String(desCipher.doFinal(buf.toString().getBytes()));
                System.out.println(dec_hello);
            } catch (InvalidKeySpecException ex) {
                Logger.getLogger(TripleDES.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(TripleDES.class.getName()).log(Level.SEVERE, null, ex);
            } catch (NoSuchPaddingException ex) {
                Logger.getLogger(TripleDES.class.getName()).log(Level.SEVERE, null, ex);
            } catch (NoSuchAlgorithmException ex) {
                Logger.getLogger(TripleDES.class.getName()).log(Level.SEVERE, null, ex);
            } catch (InvalidKeyException ex) {
                Logger.getLogger(TripleDES.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IllegalBlockSizeException ex) {
                Logger.getLogger(TripleDES.class.getName()).log(Level.SEVERE, null, ex);
            } catch (BadPaddingException ex) {
                Logger.getLogger(TripleDES.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }


Внимание: настоящий ключ не выкладываю, а также не выкладываю адрес сервера (конфиденциальная информация).

Ошибка:
ava.security.spec.InvalidKeySpecException: Inappropriate key specification
        at com.sun.crypto.provider.DESedeKeyFactory.engineGenerateSecret(DashoA13*..)
        at javax.crypto.SecretKeyFactory.generateSecret(DashoA13*..)
        at TripleDES.main(TripleDES.java:38)

Может дело в PKCS5Padding.
PM MAIL WWW ICQ Skype   Вверх
Alexandr87
Дата 3.4.2008, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


дыкий псых
***


Профиль
Группа: Завсегдатай
Сообщений: 1459
Регистрация: 27.11.2004
Где: Алматы, Казахстан

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



YuraDoc
пользоваться PBE (Password Based Encryption), нужно следующим образом:

Код

       SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("PBEWithSHA1AndDESede");
        pbeKeySpec = new PBEKeySpec(key.toCharArray());
        SecretKey pbeKey = keyFactory.generateSecret(pbeKeySpec);
        Cipher desCipher = Cipher.getInstance("PBEWithSHA1AndDESede");


Вообще ключ представляет собой массив байт. Для того, чтобы строку привести к виду ключа используются специальные механизмы. 
И далеко не факт, что сейчас у вас при расшифровывании будет появлятся ожидаемое сообщение. В php может использоваться другой механизм, который вам нужно будет выяснить.



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

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

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


 




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


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

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