Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java ME (J2ME) > Bouncy Castle Crypto APIs |
Автор: ZedroXyMur 16.8.2007, 13:35 |
Здравствуйте всем. Помогите! :confused: Вот в чем трабла: Нужно реализовать в мидлете шифрование данных. После поиска существующих библиотек по шифрованию под j2me я нашел бесплатную, самую популярную и наверное единственную Bouncy Castle Crypto APIs (http://www.bouncycastle.org/) ![]() Из папки src я скопировал сорсы в свой прожект. Попытка откомпилить – 80 ерроров. (( Порылся в Google и нашел 2 подсказки: 1) 1. Copy the java and org directories from the src directory into the src directory of your J2MEWTK project. 2. Remove the org/bouncycastle/crypto/examples directory and the org/bouncycastle/crypto/test directory. Сделал – не помогло. 2) Разархивировать уже скомпиленные классы из zips/cldc_classes.zip в папку lib. (ЗЫ: я работаю в NetBeans. Там в прожекте я в разделе Libraries я усё сделал. Специально для bouncycastle прописал в netbeans-5.5.1/etc/netbeans.conf : netbeans_default_options="-J-Xms256m -J-Xmx512m -J-XX:PermSize=256m -J-XX:MaxPermSize=512m -J-Xverify:none -J-Dapple.laf.useScreenMenuBar=true" , что бы не ругался при компиляции на heapsize). Попытка скомпилить – ОК. Следующий этап – уже непосредственно юзание библиотеки с ее функциями. Моя задача: 1 - клиент-серверу hello-сообщение со случайной строкой s1, завёрнутое в RSA открытым ключом сервера. 2 - Сервер дешифрует s1 своим закрытым ключом и генерирует строку s2 = SHA1(s1) и случайную строку s3 отсылая их клиенту в сообщении challenge 3 - клиент проверяет совпадение s2 == SHA1(s1) и в случае успеха (т.е. сервер аутентифицирован клиентом) отсылает серверу сообщение response с именем пользователя, s4 = SHA1(SHA1(пароль) + s3) и сеансовым паролем - случайной строкой p, шифрованное открытым ключём сервера при неуспешном сравнении, клиенту нужно выдать предупреждение о том, что сервер не опознан и принудительно закрыть соединение. 4 - сервер проверяет совпадение s4 == SHA1(SHA1_пароля_из_базы + s3) и в случае успеха аутентифицирует (и авторизует) клиента. 5 - сообщение клиенту об успешной аутентификации success, шифрованное сеансовым ключём по AES (SNOW? 3DES?) или сообщение об ошибке с закрытием соединения сервером. Как бы все ясно. Теперь осталось совсем ничего – всего лишь закодить это все ![]() Начал я с 1го шага и сразу же столкнулся с кууучей проблем.. 1) у мя есть ключик в PEM формате типа: -----BEGIN PUBLIC KEY----- MIGfMA0………GCSqGSIb3DQE -----END PUBLIC KEY----- Оказалось, что в BouncyCastle lcrypto-j2me нету PEMReader.java в отличии от расширенного пакета. Ладно.. Нашел пример реализации RSA шифрования: public String key_public = "30819f300…..be048a"; public BigInteger pubExp = new BigInteger("10001", 16); RSAKeyParameters pubParameters = new RSAKeyParameters(false, mod, pubExp); byte[] data = Hex.decode(edgeInput); AsymmetricBlockCipher eng = new RSAEngine(); eng = new OAEPEncoding(((PKCS1Encoding)eng).getUnderlyingCipher()); eng.init(true, pubParameters); try { data = eng.processBlock(data, 0, data.length); } catch (Exception e) {} System.out.println(new String(data)); Скомпилил – УРА. Эрроров нету… Попытка запустить: Uncaught exception java/lang/NoClassDefFoundError: java/math/BigInteger: Cannot create class in system package . Знач бага в том, что в bouncycastle есть пару либов, которые лежат в java/*… а кто то сказал: the bouncycastle library contains some additional packages that are named java.io.xxx, java.math.xxx and java.security.xxx. I read somewhere that the devices don`t allow that for security reasons…. Далее я вычитал, что этот баг решаеться обфускатором. Поставил его по макс. Попытка скомпилить: Warning: org.bouncycastle.math.ec.IntArray: can't find referenced method 'java.lang.Object clone()' in class java.lang.Object Warning: there were 1 unresolved references to program class members. Your input classes appear to be inconsistent. You may need to recompile them and try again. Alternatively, you may have to specify the options '-dontskipnonpubliclibraryclasses' and/or '-dontskipnonpubliclibraryclassmembers'. If you are sure the mentioned classes are not used anyway, you could try your luck using the '-ignorewarnings' option. Error: Please correct the above warnings first. C:\Work\j2me\Rupay Mobile\nbproject\build-impl.xml:260: Obfuscation failed with error code 1. Включил игнор варнингов… Скомпилился, но при запуске мидлета – вылетает… НАРОД! Выручайте… уже 3 день бьюсь =( замучался… не поверю, что никто не занимался шифрованием на j2me. Зарание ОГРОМНОЕ СПАСИБО ;) ЗЫ: эксперементировал с разными версиями либы. все они лежат в http://www.bouncycastle.org/download. Не помоголо. ПОЛЕЗНЫЕ ССЫЛКИ ПО ТЕМЕ: http://www.insidepro.com/hashes.php?lang=rus (Online Генератор хэшей) http://www.ibm.com/developerworks/library/j-midpds.html (Securing your J2ME/MIDP apps) http://www.javaworld.com/javaworld/jw-12-2002/jw-1220-wireless.html?page=5 (Data security in mobile Java applications) http://www.interface.ru/home.asp?artId=3860 (Шифрование данных в мобильных приложениях) http://www.mobilab.ru/articles/71/ (28 декабря 2005 г. - Шифрование данных в J2ME) http://www.bouncycastle.org/specifications.html |
Автор: javastic 16.8.2007, 13:39 |
А тебе обязательно RSA нужно криптовать? Можно же ведь взять что попроще, например Blowfish. |
Автор: ZedroXyMur 16.8.2007, 13:44 |
нужно. это ТЗ ( да и тем более я знаю, что люди уже делали RSA.. |
Автор: VOS 16.8.2007, 14:11 |
Тоже сталкивался с этим приколом. Я сделал просто, переименовал папку java из Bouncy Castle Crypto, например в java1. Ну а дальше замена везде где надо, например в файле BigInteger вместо package java.math; пишется package java1.math; в SecureRandom вместо package java.security -> package java1.security; а потом соответственно где: import java.math.BigInteger -> import java1.math.BigInteger; import java.security.SecureRandom ->import java1.security.SecureRandom; вообщем понятно. У меня IDEA там замена строки во всех файлах - нажатие пары клавиш. После этого заработало. P.S. Ваша задача сильно напоминает эмуляцию SSL протокола, при отсутствии удостоверяющего центра. Т.к. открытый ключ сервера (как я понял) уже находится в мидлете, то сам мидлет должен быть получен из доверенного источника. |
Автор: ZedroXyMur 16.8.2007, 14:39 | ||||
Спасибо большео за подсказку. Но есть пару ньюансов. Сорсы получилось откомпилить все кроие папки org.bouncycastle.asn1. Птому что какого то хрена в ней инклудятся либы под j2ee. Поэтому я что мог из сорсов запихнул в сорсы, а org.bouncycastle.asn1 положил в lib в виде уже откомпелированых классов, которые были в cldc_classes.zip.
|
Автор: javastic 16.8.2007, 15:06 | ||
Мидлет должен быть подписан. |
Автор: ZedroXyMur 16.8.2007, 15:15 | ||||
Хм.. чисто мидлет? Verysign'ом или другим сертификатом специальным только для мидлетов??? Как то тупо.. серт на сервер был куплен за 500уЁ. Получается, что нужно еще 500уЁ потратить, что бы заработало https. ЗЫ: интересный момент - я коннектился на https://www.verisign.com/ и накакого эррора мне не выдало и это без подписаного мидлета ( |
Автор: VOS 16.8.2007, 17:03 |
Ну вообщем да. Защита стало быть. Если вкратце, считается, что если пользователь загружает какой-то мидлет, которому доступны расширенные возможности, то он должен быть уверен, что это не вирус или троян, т.е. ему нужна инфа об организации, которая этот мидлет создала (аналогично апплет с правами доступа к файловой системе или ActiveX). Поэтому этот мидлет должен быть подписан. Чем подписать? Самоподписанный сертификат тут не годится, потому что никакого толку при "опознавании" от него нет. Необходим сертификат, "удостоверенный" каким-нибудь УЦ (удостоверяющим центром), например Verisign или Thawte. Почему? Потому что в телефоне по-умолчанию есть уже предустановленные (корневые) сертификаты. Это обычно сертификат производителя, а также в большинстве телефонов есть сертификат Verisign, чуть в меньшем количестве Thawte . С их помощью телефон, загружая мидлет, в конечном счете сможет понять, что этот мидлет действительно сделали именно Вы. И изменить его могли только Вы. Потому что он, грубо говоря, сначала проверит подпись под Вашим сертификатом с помощью корневого, а потом уже с помощью Вашего под мидлетом. За эту нехитрую возможность и требуют скока-то там сотен $ эти УЦ. И в обычном браузере такие же сертификаты (предустановленные) имеются. А сертификат на сервер пришлось покупать, потому что самоподписанный сертификат позволит Вам по-большому счету лишь шифровать трафик между Вами и сервером. Определить к кому Вы реально подключены - не получится. Есть еще способ - сгенерить самоподписанный сертификат и загнать его в телефон через спец. ПО. Вроде экономия, но это не круто, т.к. пользователь вряд ли сам справится ![]() Если где наврал - не со зла ![]() |
Автор: ZedroXyMur 16.8.2007, 17:20 |
2VOS: а как вы Bouncy Castle использовали? Какие еще подводные камни меня ожидают? ( Вообще, блин, устал с этими багами боротся.. у меня теперь мля не обфускатиться (( выдает все тот-же старый глюк: Warning: org.bouncycastle.math.ec.IntArray: can't find referenced method 'java.lang.Object clone()' in class java.lang.Object.. Я даже proguard последний скачал - не помогло |
Автор: VOS 17.8.2007, 10:49 |
Вообще есть еще несколько моментов, которые надо учитывать, когда Вы создаете приложения с криптозащитой. В том числе организационно-правовые. Если рассматривать законы РФ (по-моему и на Украине есть схожие требования), то деятельность связанная с криптографией относится к разряду лицензируемых. Поэтому, чтобы заниматься криптографией Вам необходимо получить лицензии ФСБ. Для того чтобы их получить необходимо выполнить ряд требований, довольно жестких. Исключения составляют случаи, когда Вы пользуетесь встроенными в ОС, терминалы и т.д. криптосредствами. Или Ваша криптография использует ключи менее 40 бит. Короче, если Вы используете встроенный протокол SSL, то Вам необязательно получать лицензии. Но есть одно но. В этом случае Ваше приложение никогда не будет сертифицировано ФСБ. Т.к. они сертифицируют приложения, которые используют лишь СКЗИ, основанные на алгоритмах ГОСТ (28147-89, 3411, 3410-2001 и т.д.) В принципе, если Ваши клиенты этого не требуют, то и ладно, но лучше посмотреть законы и т.д Если же Вы создаете собственный вариант того же SSL, то наличие лицензий обязательно (по крайней мере в РФ). Это если вкратце. Вообще я использовал Bouncy Castle Crypto APIs для симметричного и асимметричного шифрования, генерации ключей (открытый/закрытый), подписи и верификации, ну и конечно для формирования всяких HASH. Нарекания основные к датчику случайных чисел и реализации BigInteger (тормозно очень). Правда в новой версии BigInteger они немного улучшили (побыстрее стало). А для датчика случайных чисел все же лучше сделать нечто вроде сборщика энтропии, чтобы повысить его криптостойкость. Ну еще с распределением ключей пришлось повоевать. Форматы и т.д. С обсфукатором вроде не было проблем. |
Автор: ZedroXyMur 17.8.2007, 11:57 |
спасибо огромное за инфу. Все доложу так сказать высшему руководству ))) ![]() Но блин не могу решить этот баг с обфускатиньем, потому как без него - никуда: ![]() Warning: org.bouncycastle.math.ec.IntArray: can't find referenced method 'java.lang.Object clone()' in class java.lang.Object Warning: there were 1 unresolved references to program class members. Your input classes appear to be inconsistent. You may need to recompile them and try again. Alternatively, you may have to specify the options '-dontskipnonpubliclibraryclasses' and/or '-dontskipnonpubliclibraryclassmembers'. If you are sure the mentioned classes are not used anyway, you could try your luck using the '-ignorewarnings' option. Error: Please correct the above warnings first. C:\Work\j2me\Rupay Mobile\nbproject\build-impl.xml:260: Obfuscation failed with error code 1 настройки в ProGuardе стоят: -dontusemixedcaseclassnames -defaultpackage '' -overloadaggressively -keep public class ** extends javax.microedition.midlet.MIDlet { public *; } -keep public class * extends javax.microedition.midlet.MIDlet -defaultpackage -dontusemixedcaseclassnames -assumenosideeffects public class java.io.PrintStream{ public void *(%); public void *(**); } -assumenosideeffects public class java.lang.Throwable{ public void printStackTrace(); } Помоги пожайлуста. Меня просто убевает, что за 3 дня подряд у мя даже запустить мидлет не удалось ( Может у тебя есть какие то примеры или куски реализации, если не секретные канеша ![]() |
Автор: VOS 17.8.2007, 14:03 |
1) Федеральный закон от 8 августа 2001 г.№128-ФЗ «О лицензировании отдельных видов деятельности» 2) Постановление N 691 от 23 сентября 2002 г. ZedroXyMur К сожалению помочь вряд ли смогу, ухожу в отпуск на 2 недели. Возможно хоть чем-то будет полезен: http://www.mobilab.ru/articles/71/ |
Автор: ZedroXyMur 17.8.2007, 14:37 | ||
2 VOS Спасибо за помощь. И за ссылку, правда я не ломлюсь на форум не перелопатив предварительно в гугле почти все сайты по той тематике ) и кста в том примере что на mobilab у мя все получилось и скомпилилось... правда все так же без обфускатенья (с этим буду еще бороться)... хотелось бы дето норм примеры взять по RSA. в Bouncy Castle Crypto нарыл lcrypto-j2me-137\src\org\bouncycastle\crypto\test\RSATest.java там есть 3 примера де/шифрования. Мне как раз нужен был:
к сожалению результата пока что не получил :( Как будут успехи - поделюсь со всеми ![]() |
Автор: Alexandr87 17.8.2007, 14:39 | ||||||||||||
спасибо. Не нашел я правда:
К сожаленью этого тоже не нашел. Нашел, что то более менее похожее
Разве криптографические возможности тех же криптопровайдеров, тех же SSL модов, не кофигурабельны? Если честно, все эти стандарты большой маразм. Хотелось бы с вашей помощью, более детально разобраться в российском законодательстве в это сфере, а также все таки уточнить, действительно ли
|
Автор: VOS 17.8.2007, 16:51 |
Положение о лицензировании деятельности по распространению шифровальных (криптографических) средств (утв. постановлением Правительства РФ от 23 сентября 2002 г. N 691) ... 3. Настоящее Положение не распространяется на деятельность по распространению: а) шифровальных (криптографических) средств, являющихся компонентами доступных для продажи без ограничений посредством розничной торговли, либо сделок по почтовым запросам, либо электронных сделок, либо сделок по телефонным заказам программных операционных систем, криптографические возможности которых не могут быть изменены пользователями, которые разработаны для установки пользователем самостоятельно без дальнейшей существенной поддержки поставщиком и техническая документация (описание алгоритмов криптографических преобразований, протоколы взаимодействия, описание интерфейсов и т.д.) на которые является доступной, в том числе для проверки; б) персональных кредитных карточек со встроенной микроЭВМ, криптографические возможности которых не могут быть изменены пользователями; в) портативных или мобильных радиотелефонов гражданского назначения (типа радиотелефонов, предназначенных для использования в коммерческих гражданских системах сотовой радиосвязи), которые не имеют функции сквозного шифрования; г) приемной аппаратуры радиовещания, коммерческого телевидения или иной аппаратуры коммерческого типа для вещания на ограниченную аудиторию без шифрования цифрового сигнала, в которой шифрование ограничено функциями управления видео- или аудиоканалами; д) специально разработанных и применяемых только для банковских и финансовых операций шифровальных (криптографических) средств в составе терминалов единичной продажи (банкоматов), криптографические возможности которых не могут быть изменены пользователями; е) специально разработанных и применяемых только в составе контрольно-кассовых машин шифровальных (криптографических) средств защиты фискальной памяти; ж) шифровальных (криптографических) средств независимо от их назначения, реализующих симметричные криптографические алгоритмы и обладающих максимальной длиной криптографического ключа менее 40 бит, а также реализующих асимметричные криптографические алгоритмы, основанные либо на разложении на множители целых чисел, либо на вычислении дискретных логарифмов в мультипликативной группе конечного поля, либо на дискретном логарифме в группе, отличной от названной, и обладающих максимальной длиной криптографического ключа 128 бит. По второму пункту есть определенные требования ФСБ предъявляемые к системам по разным классам защиты КС1 и т.д. Они в свою очередь руководствуются ГОСТ 'ами. При этом надо различать понятия лицензирования и сертификации. Лицензируется деятельность, т.е. лицензии выдаются организации, а сертифицируется продукт. Вообще рекомендую с юристами проконсультироваться по этому поводу. Добавлено через 10 минут и 54 секунды ZedroXyMur, По обсфукатору Вам в личку письмо отправил. |
Автор: ZedroXyMur 20.8.2007, 12:55 |
Спасибо за советы! Знач вот что нужно сделать, что бы заработала либа с сорсами (а не с уже откомпилеными классами): ![]() 1) Удалить данные папки: lcrypto-j2me-137\src\java\math\test lcrypto-j2me-137\src\org\bouncycastle\asn1\test lcrypto-j2me-137\src\org\bouncycastle\crypto\examples lcrypto-j2me-137\src\org\bouncycastle\crypto\test lcrypto-j2me-137\src\org\bouncycastle\util\test 2) Нужно переименовать все классы, которые лежат в lcrypto-j2me-137\src\java т.к. это зарезервированое название пакета. И его нельзя испольвовать в j2me. В NetBeans есть функция: Refractor->Move Class. С помощью нее можно это все сделать не переименовывая классы вручную. На этом как бы все. ![]() Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. НО! бага с обфускатором остается: Warning: org.bouncycastle.math.ec.IntArray: can't find referenced method 'java.lang.Object clone()' in class java.lang.Object Warning: there were 1 unresolved references to program class members. Your input classes appear to be inconsistent. You may need to recompile them and try again. Alternatively, you may have to specify the options '-dontskipnonpubliclibraryclasses' and/or '-dontskipnonpubliclibraryclassmembers'. If you are sure the mentioned classes are not used anyway, you could try your luck using the '-ignorewarnings' option. Error: Please correct the above warnings first. C:\Work\j2me\Rupay Mobile\nbproject\build-impl.xml:260: Obfuscation failed with error code 1 Помогите кто может. Настройки обфуската: -dontusemixedcaseclassnames -defaultpackage '' -overloadaggressively -keep public class ** extends javax.microedition.midlet.MIDlet { public *; } + Может кто то дать пример реализации RSA шифрования под Bouncy Castle? ![]() |
Автор: ZedroXyMur 20.8.2007, 14:56 |
Вот мидлет с рабочей либой: http://www.intercourier.com.ua/uploads/lcryptoTest1.zip Кто может, посмотрите, почему обфускатор матерится ![]() |
Автор: ZedroXyMur 21.8.2007, 16:07 | ||||
Рабочие примеры реализации алгоритмов - AES, DES, RSA :
Добавлено @ 16:15 Рабочие примеры реализации алгоритмов - DES/DESede, IDEA, AES (Rijndael), Twofish :
|
Автор: ZedroXyMur 21.8.2007, 17:47 | ||||
Рабочие примеры реализации алгоритмов - GOST3411, MD2, MD4, MD5, RIPEMD128, RIPEMD160, RIPEMD256, RIPEMD320, SHA1, SHA224, SHA256, SHA384, SHA512, Tiger, Whirlpool :
Добавлено через 4 минуты и 16 секунд Отпишите кто знает как открыть сертификат?... Этот способ почему то глючит.. выкидывает эрроры:
|
Автор: JackSoft 24.2.2008, 15:54 | ||
А можно перезалить либу? А вобще задача связаться с опенссл библиотекой на винде (ДЕЛФИ), там ключи сгенерены как: -----BEGIN RSA PRIVATE KEY----- Proc-Type: 4,ENCRYPTED DEK-Info: DES-EDE3,0D01033A71DCBFA2 laBPkRK45+4XIllC3aQstfH8lRWwcPVvgIcKWIBXX/8vHSC1luGTK6NbKme7W6w5 vbS3AWJyuMUpPR+1NqOJr+XUwC2iYcOiQstaBZqOBq+95mAYR4w6JylO36FIn4Ga WnhGp5lZEi1mdNAUA6X0umdsEQKnkiSoF27OS3sLwhEy99zKI1kIyEZCjvA3hVMM EYmxEG5jm4XTPHAfVPPiHhiWbtBM48aTxF0RJvR8rnhV2MLrlc72h769L37nlpjX JVSLC6bzHmNJ+23F+AbNO5uTPTvkcszAb6JK+G8wL+MaGcddoEyAdkE3OdzkzV7z l60DJaWyQnhjw3arHv7KQCA3hUeIv6myAX25yeJt41TE7uj+ul/e7/wcgzLGcsq/ LAxvjw/PyaxIImhzH4KDeOlABzovGc3H7FEQCSomA4IqRVRdr56iUUa1D5Iu/XEj I9ERVhI/XgN+WfMAYLhB4EDupySsxt/bLY7fdEi9v1moeqobhC2ksrdUjwARs0bX 1EeIvR1PJSXZjiNLuqPO3LdyUGAOww8R0oShHAFxCu/6gf2NMLSC42OipGHYQTae TByRmF+oBmidRvk2pkeOUZm5zQYtLT48ySn50jXK3QCGXLNpVzwiOzh/uveqkjMb TWfAqEfKm2a4gEqnF3mu5vQ+rJHDAJ780zat3QpYwu15lZy5lldo6MXgugCDhzMw JX+nc5Bi2Hz6RhjvLJ9jOO3L9MMGw7Vcq0sNeOp+IsApcFAtd3fK4Hdy4qMyydRD J7JNHQI5Ql+8O1xAUJVcvEAioRNlNz6OH5b7urTU5MTZq2ncADopUw== -----END RSA PRIVATE KEY----- -----BEGIN RSA PUBLIC KEY----- MIGJAoGBAOj3avY9u2c7s8DSZvCyjP2ZFZQS51GzSOzYRiXGUU/Sd7TUkb/UHU3t L9YOP1iz+z7vnb8rwhHuUmexvcyELXjjl0jvEpoEqYZAR8IXI9n71wNFK36ax6zd g7qrS+Kc6rVcidzraWJrjasvYbuJD6/rYwYCACZcJ6HnmD899y1dAgMBAAE= -----END RSA PUBLIC KEY----- Но в j2me bouncycastle нет класа чтения PEM формата. Мне нужно: 1. Использовать сегнеренные опенссл ключ у себя (крипт, подпись) (RSA, DES-EDE3) (для начала хоты бы как их прочитать чтобы боунсикастл их принял). 2. Генерить ключи для ОпенССЛ и использовать у себя и на стороне опенссл (крипт, подпись) (RSA, DES-EDE3) (для начала, как сгенерить в нужных стандартах как сохранить в формат понятный опенссл?) Подскажите, коллеги, куда идти и что копать? Опыта работы с данной либой не имел и пока дже не знаю как ее одолеть... :( |
Автор: JackSoft 25.2.2008, 15:59 | ||||||
С чтением приватного ключа из PEM немного прояснилось (но это чтение нешифрованного ключа! как с DES быть пока ума не приложу. Вот код чтения:
такой же фокус для публичного не проходит:
Получаем ошибку - неизвестный обьект в фектори... :( Теперь дальше - шифрование данных больше блока (например для длины ключа 024 - блок 128)
Получаем ексепшин: java.lang.ArrayIndexOutOfBoundsException at MB.HelloMidlet.RSAEncrypt(+158) на последней строке: byte [] tmp1 = eng.processBlock(toEncrypt, blocks*blocksize, last-1); Дайте хоть какой-то ответ... :( |
Автор: VOS 26.2.2008, 18:29 |
Если у Вас toEncrypt.length == blocks*blocksize то last==0 тогда в предпоследней строке будет eng.processBlock(toEncrypt, blocks*blocksize, -1); может из-за этого исключения? |
Автор: JackSoft 26.2.2008, 20:09 | ||
Вот исправленная версия. Даже блок вручную выставил 126 (для 1024 бит он 128). Тот же ексепшин
|
Автор: JackSoft 29.2.2008, 14:55 | ||||||
И так с криптом разобрался! Вот правильный метод для любой длины:
Добавлено через 5 минут и 47 секунд А вот декрипт смог осилить для длины до 128 байт и до 256 бай. Выше - в расшифрованном тексте появляется мусор! Помогите, коллеги - уже замучался...
С eng = new PKCS1Encoding(eng); отлично расшифровывает без мусора блоки до 128 байт или последний блок, но на первые дает ексепшин:
|
Автор: JackSoft 29.2.2008, 16:47 | ||
По декрипту пока выкрутился так:
Может не красиво, но работает ![]() Теперь давайте оптимизироваться... ;) |
Автор: JackSoft 7.3.2008, 16:07 |
Все вопросы сняты. Спасибо. |
Автор: JackSoft 15.4.2008, 23:50 |
А кто поделится опытом работы с эллиптическими кривыми? Есть знатоки? icq: 44436588 |
Автор: vzf 19.6.2008, 11:06 | ||
Я думаю стоит поверить тому, что говорит VOS ![]() |
Автор: onwave 12.8.2008, 13:40 |
Народ, кто-нибудь знает как сохранить/загрузить сгенерированные при помощи bouncycastle RSA ключи на телефоне? Нужно делать/верифицировать подписи для отправляемых через http сообщений. |
Автор: Deel 17.8.2009, 03:41 | ||
Всем привет. У меня не работают ваши методы по декрипту и анкрипту RSA)) Решил сделать сам, вот выкладываю, кому нужен код, для любой длины, на компе все прекрасно работает ![]()
|
Автор: alex30341 23.8.2009, 15:42 |
Доброго времени суток. В проекте необходимо использовать шифрование. Выбор как и у многих пал на 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 |
Автор: Anatret 13.8.2012, 14:33 | ||
А как можно подгрузить ключи(Priv и Pub) из файла(.pfx) и только средствами lcrypto-j2me? В SE делаю так
и все нормально работает но в ME не работает так как нет некоторых классов. |