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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шифрование в апплетах 
:(
    Опции темы
d@nik
Дата 20.11.2007, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем, доброго времени суток.
Столкнулся с такой проблемой - необходимо осуществить шифрование открытого текста, введенного пользователем и передать из JavaScript на сервер. Сервер написан на PHP и обмен параметрами идет через POST. 
Курсовик - с использованием Ajax, и  обратная связь - XML или просто текст с разделителями. 
Суть проблемы в следующем: для шифрования использую DES. Для работы нужен 
Код

SecretKey key;

Он генерится в одной из функций апплета. Но как мне передать этот ключ шифрования в hidden-поле страницы для записи в БД и как вернуть его обратно при дешифровании сообщения? 
Код

key.toString();

идет без проблем и это можно записать и в hidden-поле и сохранить как строку в БД, но как из этой строки получить тот же SecretKey?
Подскажите  пожалуйста. Заранее спасибо.
PM MAIL   Вверх
AntonSaburov
Дата 20.11.2007, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Так тебе на JavaScript надо или на Java ?
PM MAIL WWW ICQ   Вверх
d@nik
Дата 21.11.2007, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Шифрование должно происходить в апплете. Ключ шифрования SecretKey должен передаваться через XMLHTTPRequest в hidden-поле формы. Затем, при отправке этот ключ считывается из этого hidden-поля и передаётся на сервер вместе с зашифрованным сообщением. Ну короче говоря, шифрование и дешифрование в функциях апплета. Но как организовать дешифрование ключом, который был сгенерирован, записан в БД, а перед дешифрованием был считан PHP-сценарием и передан на форму через Javascript в виде строки?  
PM MAIL   Вверх
Alexandr87
Дата 21.11.2007, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



как-то так.
Код

public class Main {
    
    public static byte[] decrypt(byte key[], byte encrypted[])
    throws Exception {

        SecretKeyFactory skFactory  = SecretKeyFactory.getInstance("DES");
        SecretKey sKey = skFactory.generateSecret(new DESKeySpec(key));
        
        Cipher ciph = Cipher.getInstance("DES");
        ciph.init(Cipher.DECRYPT_MODE, sKey);
        return ciph.doFinal(encrypted);
    }
    
    public static byte[] encrypt(byte key[], byte data[])
    throws Exception {
        
        SecretKeyFactory skFactory  = SecretKeyFactory.getInstance("DES");
        SecretKey sKey = skFactory.generateSecret(new DESKeySpec(key));

        Cipher ciph = Cipher.getInstance("DES");
        ciph.init(Cipher.ENCRYPT_MODE, sKey);
        return ciph.doFinal(data);
    }
    
    public static byte[] genKey(byte data[])
    throws Exception {
        
        KeyGenerator kgen = KeyGenerator.getInstance("DES");
        SecretKey sKey = kgen.generateKey();
        return sKey.getEncoded();
    }
    
    public static void main(String[] args)
    throws Exception {
        
        byte message[] = "AAAA, upiachko".getBytes();
        System.out.println("Clear:    " + new String(Hex.encodeHex(message)));
        
        byte key[] = genKey(message);
        
        byte encrypted[] = encrypt(key, message);
        System.out.println("Encrypted:" + new String(Hex.encodeHex(encrypted)));
        byte decrypted[] = decrypt(key, encrypted);
        System.out.println("Decrypted:" + new String(Hex.encodeHex(decrypted)));
        
    }
}



PS. в данном контексте правильно говорить - расшифровывать, а не дешифровывать.

PM Jabber   Вверх
LSD
Дата 25.11.2007, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15717
Регистрация: 24.3.2004
Где: Dublin

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





--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
d@nik
Дата 28.11.2007, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем ответившим - большой thanks.
Но несколько вопросов to Alexandr87:
1. Для чего в функцию genKey передаётся параметр data?
2. В каком пакете находится Hex? Что нужно import для доступности Hex?
PM MAIL   Вверх
Alexandr87
Дата 28.11.2007, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(d@nik @  28.11.2007,  18:08 Найти цитируемый пост)
1. Для чего в функцию genKey передаётся параметр data?

случайность. не нужен он там, видать когда тестировал, что то еще проверял.

Цитата(d@nik @  28.11.2007,  18:08 Найти цитируемый пост)
Hex

apache commons codec
Но, впринципе такой класс написать - дело 5 минут.

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

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

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


 




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


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

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