загрузка...
загрузка...
загрузка...

Детализация по запросу

загрузка...
загрузка...

Блог о пеленгации

Тема поста:

Использование библиотеки Bouncy Castle в JavaMe (Часть 1)

1. Как использовать.
Чтобы работать с Bouncy Castle из своего проекта, вы должны аккуратно скопировать в корень своего мобильного приложения папку бибилотеки, не изменяя её внутреннюю файловую структуру. Проще говоря - копируйте папку org в папку src проекта). Хочется обратить внимание на то, что мы делаем мобильное приложение и поэтому размер имеет значение - чем меньше используем классов тем лучше. Практически всегда используется содержимое папок:
  • ...\src\org\bouncycastle\util\ - различные вспомогательные типы данных (к примеру числа BigIntegers - нужны для генерации псевдослучайных чисел).
  • ...\src\org\bouncycastle\math\ - здесь всё понятно и без слов - шифрование без математики - никак)).
2. Небольшие примеры использования.
2.1 Хеш MD5:
 public static String MD5_EncodeHEX(String data) {  
     MD5Digest dig = new MD5Digest();  
     byte[] bytes = data.getBytes();  
     dig.update(bytes, 0, bytes.length);  
     byte[] md5 = new byte[dig.getDigestSize()];  
     dig.doFinal(md5, 0);
     StringBuffer hexString = new StringBuffer();
     for (int i = 0; i < md5.length; i++) {
       byte aMessageDigest = s[i];
       String hex = Integer.toHexString(0xff & aMessageDigest);  
       if (hex.length() == 1) {  
         hexString.append('0');  
       }  
       hexString.append(hex);  
     }  
     return hexString.toString();  
   }  
2.2 Шифрование данных на основе пароля потоковым алгоритмом шифрования RC4:
 public static String CryptData(byte[] key, byte[] source) {  
    if (source.length == 0) {  
      return new String("");  
    }
    String r = "";  	
    try {
      RC4Engine e_rc4 = new RC4Engine();
      KeyParameter kp = new KeyParameter(MD5_EncodeHEX(new String(key)).getBytes(), 0, 10);
      e_rc4.init(true, kp);
      byte e_rez[] = new byte[source.length];
      e_rc4.processBytes(source, 0, source.length, e_rez, 0);
      r = new String(Base64.encode(e_rez));
      e_rc4.reset();  
     } catch (Exception e) {  
       r = "";  
     }  
     return r;  
   }  
2.3 Дешифрование данных на основе пароля потоковым алгоритмом шифрования RC4:
 public static String DecryptData(byte[] key, byte[] csource) {  
    if (csource.length == 0) {  
      return new String("");  
    }
    String r = "";  	
    try {  
      RC4Engine e_rc4 = new RC4Engine();  
      KeyParameter kp = new KeyParameter(MD5_encodeHEX(new String(key)).getBytes(), 0, 10);  
      e_rc4.init(false, kp);  
      byte[] isx = Base64.decode(csource);  
      byte e_rez[] = new byte[isx.length];  
      e_rc4.processBytes(isx, 0, isx.length, e_rez, 0);
      r = new String(e_rez);  
      e_rc4.reset();  
     } catch (Exception e) {  
       r = "";  
    }  
    return r;  
  }  
Комментарий к коду.
Как видим представлено лишь самое начало использования криптобиблиотеки. Примеры использования по каждому классу имеются уже в исходниках. Спектр использования очень широк:
  • Хеширование значений различнми алгоритмами.
  • Симметричное и ассиметричное шифрование различными алгоритмами.
  • Цифровые подписи, сертификаты.
  • Преобразование данных (к примеру даже: Base64).
  • И так далее...
В следующий частях блога по данной библиотеке рассмотрим такую интересную тему, как генерация RSA ключей, совместимых с форматом представления в MSDN.
Вставить карту яндекс на сайт

Работа с сетью из мидлета средствами JavaMe

Использование библиотеки Bouncy Castle в JavaMe (Часть 1)

Использование библиотеки Bouncy Castle в JavaMe (Часть 2)

Запись звонков

Найти человека по номеру телефона

Файловая система Android

Запись звука на Android

Локация в JavaCard

Философия прослушки

MBLOC.RU
Copyright © MBLOC.RU Все права защищены от взлома и подделки данного сайта. Распространение информации без разрешения владельца данного сайта запрещается и карается всей строгостью закона.