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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Bouncy Castle Crypto APIs 
:(
    Опции темы
Deel
Дата 17.8.2009, 03:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем привет.
У меня не работают ваши методы по декрипту и анкрипту RSA)) Решил сделать сам, вот выкладываю, кому нужен код, для любой длины, на компе все прекрасно работает  smile 

    
Код

    public byte[] RSAEncrypt(byte[] toEncrypt) throws Exception {
        AsymmetricBlockCipher eng = new RSAEngine();
        eng = new PKCS1Encoding(eng);
        eng.init(true, RSApubKey);
        int inSize = eng.getInputBlockSize();
        int outSize = eng.getOutputBlockSize();
        int len = toEncrypt.length;
        byte[] bytes, tmp = new byte[(len/inSize+1)*outSize];
        int i = 0;
        for(; i < len/inSize; i++){
            bytes = eng.processBlock(toEncrypt, i*inSize, inSize);
            System.arraycopy (bytes, 0, tmp, i*outSize, outSize);
        }
        int rem = len%inSize;
        if(rem > 0){
            bytes = eng.processBlock(toEncrypt, i*inSize, len%inSize);
            System.arraycopy (bytes, 0, tmp, i*outSize, outSize);
        }
        return tmp;
    }

    public byte [] RSADecrypt(byte [] toDecrypt) throws Exception {
        AsymmetricBlockCipher eng = new RSAEngine();
        eng = new PKCS1Encoding(eng);
        eng.init(false, RSAprivKey);
        int len = toDecrypt.length;
        int inSize = eng.getInputBlockSize();
        int outSize = eng.getOutputBlockSize();
        byte[] bytes = new byte[0], tmp = new byte[len/inSize*outSize];
        int i = 0;
        for(; i < len/inSize; i++){
            bytes = eng.processBlock(toDecrypt, i*inSize, inSize);
            System.arraycopy(bytes, 0, tmp, i*outSize, bytes.length);
        }
        bytes = new byte[tmp.length-outSize+bytes.length];
        System.arraycopy(tmp, 0, bytes, 0, bytes.length);
        return bytes;
    }


Это сообщение отредактировал(а) Deel - 17.8.2009, 03:42
PM MAIL   Вверх
alex30341
Дата 23.8.2009, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток.
В проекте необходимо использовать шифрование. Выбор как и у многих пал на Bouncy Castle... ибо.. да просто выбрал и все там еще есть библиотечка для C# которая мне потом пригодится для сервера. Скачал lcrypto-j2me-143, в папке zips переименовал cldc_classes.zip в cldc_classes.jar, подключил Project -> Properties -> Java Build Path -> Libraries -> Add External Jars...
галочку поставил в Order and Export и при нажатии на ОК выпадает сообщение "Can not find jar tool executable. The JAR tools requires a JDK full installation..."
Что за JDK? Где его брать? Пошарился у San JDK для J2ME не нашел.
Вообще проект при компиляции выдает ошибку
Error preverifying class org.bouncycastle.crypto.agreement.kdf.DHKEKGenerator VERIFIER ERROR org/bouncycastle/crypto/agreement/kdf/DHKEKGenerator.generateBytes([BII)I: Cannot find class org/bouncycastle/asn1/DEREncodable.
Я понимаю что какая-то мелочь не работает а ничего не нашел.
Короче как подключить библиотеку к своему Midlet? 

PS Среда разработки EasyEclipse Mobile Java
PM MAIL   Вверх
Anatret
Дата 13.8.2012, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А как можно подгрузить ключи(Priv и Pub) из файла(.pfx) и только средствами lcrypto-j2me? 
В SE делаю так 
Код

InputStream fis = new FileInputStream("file.pfx");
            KeyStore ks = KeyStore.getInstance("PKCS12");
            char[] pwArray = "test".toCharArray();
            ks.load(fis, pwArray);
            String alias = ks.aliases().nextElement().toString();
            PrivateKey pKey = (PrivateKey)ks.getKey(alias, pwArray);
            KeyFactory keyFactory = KeyFactory.getInstance("RSA");
            certX509 = (X509Certificate)ks.getCertificate(alias);
            publicKey = certX509.getPublicKey();
            KeySpec ksp = new PKCS8EncodedKeySpec(pKey.getEncoded());
            privKey = (RSAPrivateKey) keyFactory.generatePrivate(ksp);
            k = (RSAPrivateCrtKey)privKey;
            System.out.println(privKey.getAlgorithm());
            RSAprivKeyBOU = new RSAPrivateCrtKeyParameters(k.getModulus(),k.getPublicExponent(),
                    k.getPrivateExponent(),k.getPrimeP(),
                    k.getPrimeQ(),k.getPrimeExponentP(),
                    k.getPrimeExponentQ(),k.getCrtCoefficient());
            System.out.println(RSAprivKeyBOU.getExponent());
            RSApubKeyBOU = new RSAKeyParameters(false, k.getModulus(), k.getPublicExponent());

и все нормально работает но в ME не работает так как нет некоторых классов.
PM MAIL   Вверх
Страницы: (3) Все 1 2 [3] 
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




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


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

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