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

Поиск:

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


Новичок



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

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



Здравствуйте всем.
Помогите! :confused: 
Вот в чем трабла:
Нужно реализовать в мидлете шифрование данных. После поиска существующих библиотек по шифрованию под j2me я нашел бесплатную, самую популярную и наверное единственную Bouncy Castle Crypto APIs (http://www.bouncycastle.org/) smile но моя радость долго не продлилась… 
Из папки 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?) или сообщение об ошибке с закрытием соединения сервером.
Как бы все ясно. Теперь осталось совсем ничего – всего лишь закодить это все smile)

Начал я с 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-2...ess.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

Это сообщение отредактировал(а) ZedroXyMur - 20.8.2007, 16:37
PM MAIL   Вверх
javastic
Дата 16.8.2007, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

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



А тебе обязательно RSA нужно криптовать? Можно же ведь взять что попроще, например Blowfish.


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
ZedroXyMur
Дата 16.8.2007, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



нужно. это ТЗ ( да и тем более я знаю, что люди уже делали RSA..
PM MAIL   Вверх
VOS
Дата 16.8.2007, 14:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Тоже сталкивался с этим приколом. 
Я сделал просто, переименовал папку 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 протокола, при отсутствии удостоверяющего центра. Т.к. открытый ключ сервера
(как я понял) уже находится в мидлете, то сам мидлет должен быть получен из доверенного источника. 
PM MAIL   Вверх
ZedroXyMur
Дата 16.8.2007, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо большео за подсказку. Но есть пару ньюансов. Сорсы получилось откомпилить все кроие папки org.bouncycastle.asn1. Птому что какого то хрена в ней инклудятся либы под j2ee. Поэтому я что мог из сорсов запихнул в сорсы, а org.bouncycastle.asn1 положил в lib в виде уже откомпелированых классов, которые были в cldc_classes.zip.

Цитата

Т.к. открытый ключ сервера
(как я понял) уже находится в мидлете, то сам мидлет должен быть получен из доверенного источника.
 - есть такое.

Цитата

P.S. Ваша задача сильно напоминает эмуляцию SSL протокола, при отсутствии удостоверяющего центра.
 - а у вас получалось поднять SSL под j2me? у меня не получилось (( у меня есть сервер сертифицированный. На компе все работает на ура. А в j2me при попытке законнектиться по https выдает "Certificate was issued by anunrecognized entity" IOException... Если подскажешь как побороть, то буду тебе оооочень благодарен.
PM MAIL   Вверх
javastic
Дата 16.8.2007, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1214
Регистрация: 18.3.2005
Где: St.Petersburg

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



Цитата

 - а у вас получалось поднять SSL под j2me? у меня не получилось (( у меня есть сервер сертифицированный. На компе все работает на ура. А в j2me при попытке законнектиться по https выдает "Certificate was issued by anunrecognized entity" IOException... Если подскажешь как побороть, то буду тебе оооочень благодарен. 


Мидлет должен быть подписан.


--------------------
01101010 01100001 01110110 01100001 01110011 01110100 01101001 01100011
scjp, mcp 
PM MAIL WWW ICQ   Вверх
ZedroXyMur
Дата 16.8.2007, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(javastic @ 16.8.2007,  15:06)
Цитата

 - а у вас получалось поднять SSL под j2me? у меня не получилось (( у меня есть сервер сертифицированный. На компе все работает на ура. А в j2me при попытке законнектиться по https выдает "Certificate was issued by anunrecognized entity" IOException... Если подскажешь как побороть, то буду тебе оооочень благодарен. 


Мидлет должен быть подписан.

Хм.. чисто мидлет? Verysign'ом или другим сертификатом специальным только для мидлетов??? Как то тупо.. серт на сервер был куплен за 500уЁ. Получается, что нужно еще 500уЁ потратить, что бы заработало https. 
ЗЫ: интересный момент - я коннектился на https://www.verisign.com/ и накакого эррора мне не выдало и это без подписаного мидлета (
PM MAIL   Вверх
VOS
Дата 16.8.2007, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ну вообщем да.  Защита стало быть. Если вкратце, считается, что если пользователь загружает какой-то мидлет, которому доступны расширенные возможности, то он должен быть уверен, что это не вирус или троян, т.е. ему нужна инфа об организации, которая этот мидлет создала (аналогично апплет с правами доступа к файловой системе или ActiveX).
Поэтому этот мидлет должен быть подписан.
Чем подписать? Самоподписанный сертификат тут не годится, потому что никакого толку при "опознавании" от него нет. 
Необходим сертификат, "удостоверенный" каким-нибудь УЦ (удостоверяющим центром), например Verisign или Thawte. 
Почему? Потому что в телефоне по-умолчанию есть уже предустановленные (корневые) сертификаты. Это обычно сертификат производителя, а также в большинстве телефонов есть сертификат Verisign, чуть в меньшем количестве Thawte . С их помощью телефон, загружая мидлет, в конечном счете сможет понять, что этот мидлет действительно сделали именно Вы. И изменить его могли только Вы. Потому что он,  грубо говоря, сначала проверит подпись под Вашим сертификатом с помощью корневого, а потом уже с помощью Вашего под мидлетом. За эту нехитрую возможность и требуют скока-то там сотен $ эти УЦ. И в обычном браузере такие же сертификаты (предустановленные) имеются.

А сертификат на сервер пришлось покупать, потому что самоподписанный сертификат позволит Вам по-большому счету лишь шифровать трафик между Вами и сервером. Определить к кому Вы реально подключены - не получится. 

Есть еще способ  - сгенерить самоподписанный сертификат и загнать его в телефон через спец. ПО. Вроде экономия, но это не круто, т.к. пользователь вряд ли сам справится smile

Если где наврал - не со зла smile
PM MAIL   Вверх
ZedroXyMur
Дата 16.8.2007, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



2VOS: а как вы Bouncy Castle использовали? Какие еще подводные камни меня ожидают? ( Вообще, блин, устал с этими багами боротся.. у меня теперь мля не обфускатиться (( выдает все тот-же старый глюк: Warning: org.bouncycastle.math.ec.IntArray: can't find referenced method 'java.lang.Object clone()' in class java.lang.Object..
Я даже proguard последний скачал - не помогло
PM MAIL   Вверх
VOS
Дата 17.8.2007, 10:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вообще есть еще несколько моментов, которые надо учитывать, когда Вы создаете  приложения с криптозащитой.
В том числе организационно-правовые.
Если рассматривать законы РФ (по-моему и на Украине есть схожие требования), то деятельность связанная с криптографией относится к разряду лицензируемых. Поэтому, чтобы заниматься криптографией Вам необходимо получить лицензии ФСБ.  Для того чтобы их получить необходимо выполнить ряд требований, довольно жестких. 
Исключения составляют случаи, когда Вы пользуетесь встроенными в ОС, терминалы и т.д. криптосредствами. Или Ваша криптография использует ключи менее 40 бит.
Короче, если Вы используете встроенный протокол SSL,  то Вам необязательно получать лицензии. Но есть одно но. В этом случае Ваше приложение никогда не будет сертифицировано ФСБ. Т.к. они сертифицируют приложения, которые используют лишь СКЗИ, основанные на алгоритмах ГОСТ (28147-89, 3411, 3410-2001 и т.д.) В принципе, если Ваши клиенты этого не требуют, то и ладно, но лучше посмотреть законы и т.д
Если же Вы создаете собственный вариант того же SSL, то наличие лицензий обязательно (по крайней мере в РФ). Это если вкратце.

Вообще я использовал Bouncy Castle Crypto APIs для симметричного и асимметричного шифрования,  генерации ключей (открытый/закрытый), подписи и верификации, ну и конечно для формирования всяких HASH.  
Нарекания основные к датчику случайных чисел и реализации BigInteger (тормозно очень). Правда в новой версии BigInteger они немного улучшили (побыстрее стало). А для датчика случайных чисел все же лучше сделать нечто вроде сборщика энтропии, чтобы повысить его криптостойкость. Ну еще с распределением ключей пришлось повоевать. Форматы и т.д.
С обсфукатором вроде не было проблем.

PM MAIL   Вверх
ZedroXyMur
Дата 17.8.2007, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо огромное за инфу. Все доложу так сказать высшему руководству )))  smile 
Но блин не могу решить этот баг с обфускатиньем, потому как без него - никуда: smile 

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 дня подряд у мя даже запустить мидлет не удалось (
Может у тебя есть какие то примеры или куски реализации, если не секретные канеша  smile 
PM MAIL   Вверх
Alexandr87
Дата 17.8.2007, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(VOS @  17.8.2007,  13:49 Найти цитируемый пост)
Исключения составляют случаи, когда Вы пользуетесь встроенными в ОС, терминалы и т.д. криптосредствами. Или Ваша криптография использует ключи менее 40 бит.

можно сцылку на документ?


Цитата(VOS @  17.8.2007,  13:49 Найти цитируемый пост)
Т.к. они сертифицируют приложения, которые используют лишь СКЗИ, основанные на алгоритмах ГОСТ (28147-89, 3411, 3410-2001 и т.д.)

Тоже бы хотелось увидеть нормативные документы. И, интересует вопрос, что они предлагают для ключевого обмена.


А вообще, сомневаюсь я, что если я для своей конторы, друзей напишу программу обмена данными по своему защищенному протоколу, то ко мне придут злые дядьки из ФСБ. Ну вот чем, он отличается от тогоже SSL. Всмысле, смысл где?
Но это все конечно, если контора не государственная и не подподает под правила других отдельных нормативных документов. Например банки.
Хотя, как говорил один человек, в нашей стране (имея ввиду скорее бывших СССР) посадить могут кого угодно и за что угода.
PM Jabber   Вверх
VOS
Дата 17.8.2007, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



1) Федеральный закон от 8 августа 2001 г.№128-ФЗ «О лицензировании отдельных видов деятельности»
2) Постановление N 691 от 23 сентября 2002 г.

ZedroXyMur

К сожалению помочь вряд ли смогу, ухожу в отпуск на 2 недели. Возможно хоть чем-то будет полезен:
http://www.mobilab.ru/articles/71/

PM MAIL   Вверх
ZedroXyMur
Дата 17.8.2007, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



2 VOS
Спасибо за помощь. И за ссылку, правда я не ломлюсь на форум не перелопатив предварительно в гугле почти все сайты по той тематике ) и кста в том примере что на mobilab у мя все получилось и скомпилилось... правда все так же без обфускатенья (с этим буду еще бороться)... хотелось бы дето норм примеры взять по RSA. в Bouncy Castle Crypto нарыл lcrypto-j2me-137\src\org\bouncycastle\crypto\test\RSATest.java там есть 3 примера де/шифрования. Мне как раз нужен был:
Код

        //
        // OAEP - public encrypt, private decrypt
        //
        eng = new OAEPEncoding(((PKCS1Encoding)eng).getUnderlyingCipher());

        eng.init(true, pubParameters);

        try
        {
            data = eng.processBlock(data, 0, data.length);
        }
        catch (Exception e)
        {
            return new SimpleTestResult(false, "RSA: failed - exception " + e.toString());
        }

        eng.init(false, privParameters);

к сожалению результата пока что не получил :(
Как будут успехи - поделюсь со всеми  smile 
PM MAIL   Вверх
Alexandr87
Дата 17.8.2007, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(VOS @  17.8.2007,  17:03 Найти цитируемый пост)
1) Федеральный закон от 8 августа 2001 г.№128-ФЗ «О лицензировании отдельных видов деятельности»
2) Постановление N 691 от 23 сентября 2002 г.

спасибо.

Не нашел я правда:
Цитата(VOS @  17.8.2007,  13:49 Найти цитируемый пост)
.к. они сертифицируют приложения, которые используют лишь СКЗИ, основанные на алгоритмах ГОСТ (28147-89, 3411, 3410-2001 и т.д.)





Цитата(VOS @  17.8.2007,  13:49 Найти цитируемый пост)
Исключения составляют случаи, когда Вы пользуетесь встроенными в ОС, терминалы и т.д. криптосредствами. Или Ваша криптография использует ключи менее 40 бит.

К сожаленью этого тоже не нашел. Нашел, что то более менее похожее
Цитата

3. Настоящее Положение не распространяется на деятельность по распространению:
а) шифровальных (криптографических) средств, являющихся компонентами доступных для продажи без ограничений посредством розничной торговли, либо сделок по почтовым запросам, либо электронных сделок, либо сделок по телефонным заказам программных операционных систем, криптографические возможности которых не могут быть изменены пользователями, которые разработаны для установки пользователем самостоятельно без дальнейшей существенной поддержки поставщиком и техническая документация (описание алгоритмов криптографических преобразований, протоколы взаимодействия, описание интерфейсов и т.д.) на которые является доступной, в том числе для проверки; 

Разве криптографические возможности тех же криптопровайдеров, тех же SSL модов, не кофигурабельны?


Если честно, все эти стандарты большой маразм.

Хотелось бы с вашей помощью, более детально разобраться в российском законодательстве в это сфере, а также все таки уточнить, действительно ли 


Цитата(VOS @  17.8.2007,  13:49 Найти цитируемый пост)
Исключения составляют случаи, когда Вы пользуетесь встроенными в ОС, терминалы и т.д. криптосредствами. Или Ваша криптография использует ключи менее 40 бит.


Цитата(VOS @  17.8.2007,  13:49 Найти цитируемый пост)
.к. они сертифицируют приложения, которые используют лишь СКЗИ, основанные на алгоритмах ГОСТ (28147-89, 3411, 3410-2001 и т.д.)


PM Jabber   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса

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

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


 




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


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

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