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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шифрование данных в ява и расшифровка... DES PCBC 
:(
    Опции темы
Rulevoj
  Дата 16.11.2010, 06:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Использовал код:

Код

import java.io.UnsupportedEncodingException;


import java.security.Key;
import java.security.NoSuchAlgorithmException;


import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;


public class CryptoUtil {


    /*
     * Also as parameter can be used DES, DESede, Blowfish etc
     */


    public static final String ALGORITHM_KEY = "DES";
    public static final String ALGORITHM = "DES/PCBC/PKCS5Padding";


    public static final byte[] SALT = new byte[]{
        (byte) 0xc7, (byte) 0x73, (byte) 0x21, (byte) 0x8c, (byte) 0x7e, (byte) 0xc8, (byte) 0xee, (byte) 0x99
    };


    public static byte[] encode(String clearText, Key key){
        try{
            return crypt(clearText.getBytes("UTF-8"), key, Cipher.ENCRYPT_MODE);
        }catch (UnsupportedEncodingException usee){
            usee.printStackTrace();
        }
        return null;
    }


    public static String decode(byte[] cipherText, Key key){
        return new String(crypt(cipherText, key, Cipher.DECRYPT_MODE));
    }


    private static SecretKey generateKey(){
        try{
            return KeyGenerator.getInstance(ALGORITHM_KEY).generateKey();
        }catch (NoSuchAlgorithmException nsae){
            nsae.printStackTrace();
        }
        return null;
    }


    private static byte[] crypt(byte[] input, Key key, int mode){
        IvParameterSpec iv = new IvParameterSpec(SALT);
        Cipher c;
        try{
            c = Cipher.getInstance(ALGORITHM);
            c.init(mode, key, iv);
            return c.doFinal(input);
        }catch(Exception e){
            e.printStackTrace();
        }
        return null;
    }




    public static void main(String[] args){
        String data = "sdztjdr";
        Key key = generateKey();
        byte[] encode = CryptoUtil.encode(data, key);
        System.out.println("encode> " + encode);
        String decode = CryptoUtil.decode(encode, key);
        System.out.println("decode> " + decode);
        System.out.println(key.getFormat());


    }
}



например я шифрую слово test


Код


// :))

public static final String ALGORITHM_KEY = "DES";

private static SecretKey generateKey(){
try{
return KeyGenerator.getInstance(ALGORITHM_KEY).generateKey();
}catch (NoSuchAlgorithmException nsae){
nsae.printStackTrace();
}
return null;
}

// :)


String pass = "test";


         Key key = generateKey();
         byte[] encode = CryptoUtil.encode(pass, key);
         String decode = CryptoUtil.decode(encode, key);




в результате получаю:

Слово: test
ключ: com.sun.crypto.provider.DESKey@fffe7aea
Зашифровано как: [B@19b5393
расшифровка: test


меня это устраивает....
Только ключ постоянно меняется... как сделать Key постоянным, или это не возможно??? Или есть какойто другой метод шифрования и расшифровки с постоянным ключём...  Запарился уже... всю ночь ищю.....



Это сообщение отредактировал(а) Rulevoj - 16.11.2010, 06:41
PM MAIL WWW ICQ Skype   Вверх
Rulevoj
  Дата 16.11.2010, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Ещё кажется можно применить хеширование и дэхеширование... я пробовал MD5 у меня хешировать получается а вот дэхэшировать нет.... Есть может какой другой алогоритм дэхеширования??? который хорошо кодирует переменные??? ну и естественно обратно их возвращает...
PM MAIL WWW ICQ Skype   Вверх
AxNe0
Дата 16.11.2010, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 24.4.2006
Где: St. Petersburg

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



Rulevoj, а как ты определил, что ключ постоянно меняется? 


--------------------
SCJP 6, SCBCD 5, OCEWSD 6
blog
PM ICQ Skype   Вверх
kkorsakoff
Дата 17.11.2010, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

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

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


 




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


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

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