2010-04-06 3 views
6

Я пытаюсь написать небольшое приложение, использующее BouncyCastle алгоритм, из BouncyCastleProvider.java он говорит, что мы должны импортировать и добавить поставщика во время выполнения следующего кодакак добавить BouncyCastle алгоритм Android

import org.bouncycastle.jce.provider.BouncyCastleProvider; Security.addProvider(new BouncyCastleProvider());

ошибка - импорт org.bouncycastle не может быть разрешен; во время импорта ошибка - BouncyCastleProvider не может быть разрешен для типа; при вызове addProvider

Я, хотя bouncycastle не предоставляется с Android 1.6 SDK, поэтому подумал об установке отдельно. как я должен это делать? Если Bouncycastle поставляется вместе с SDK, что мне делать, чтобы избежать этих ошибок? Я использую Android 1.6, eclipse-V3.4.0 на winXP. Заранее спасибо

+0

См. Мой ответ на другой аналогичный вопрос: http: // stackoverflow.com/questions/4065379/how-to-create-a-bks-bouncycastle-format-java-keystore-that-contains-a-client-c/10026598 # 10026598 – Vipul

ответ

2

Я не знаком с этой конкретной библиотекой. Однако здесь приведены общие инструкции о том, как включить библиотеку, поставляемую в виде файла jar в проект Android.

Загрузите файл jar и поместите его где-нибудь на рабочую станцию. Вы можете захотеть поместить в корневую директорию проекта, в которой вы ее устанавливаете, или, может быть, в директорию «lib» в корне.

В Eclipse выберите Project-> Properties, затем выберите Java Build Path. Затем нажмите «Добавить внешние банки», перейдите туда, где вы поместите файл .jar, выберите его и нажмите «Открыть».

Теперь введите или вставьте код, который пытается использовать классы в банке. Если вам повезет, в левом поле появится значок световой лампы. Нажав на это, вы предложите добавить правильный оператор Import в верхнюю часть вашего .java-файла.

Есть еще вещи, которые могут пойти не так на этом этапе. Библиотека может использовать java. * Или javax. * Контент, не поставляемый Android (у него есть только подмножество этих библиотек). Кроме того, он может иметь собственные собственные собственные библиотеки. Существуют и другие причины, по которым .jar может быть несовместим с платформой Android.

Обратите внимание, что это увеличит размер вашего .apk для размещения нового контента.

+0

Я попытался добавить банальную банку с замком и попытался получить из secretKeyFactory, но он генерирует исключение. Такой алгоритм – Vamsi

+0

Это звучит как локальное исключение из этой библиотеки, а не проблема включения библиотеки. –

5

Вам не нужно явно добавлять BouncyCastle в качестве поставщика. Как вы говорите, он уже включен в Android.

Вот что мне делать, чтобы получить шифр BouncyCastle AES,

SecretKeyFactory keyFac = SecretKeyFactory.getInstance("PBEWithSHA256And256BitAES-CBC-BC"); 

Если вы посмотрите в BouncyCastleProvider.java вы увидите ссылку на PBEWithSHA256And256BitAES-CBC-BC наряду с несколькими другими шифров, предоставленных BouncyCastle.

+1

выдает исключение NoSuchAlgorithm – Vamsi

+1

Странный. Я не уверен, в чем проблема. Вот код, который я запускаю, http://upm.svn.sourceforge.net/viewvc/upm/android/trunk/src/com/u17od/upm/crypto/EncryptionService.java?view=markup. Работает на Android 1.5 и 2.1. – Adrian

+0

AES - не единственный алгоритм шифрования, который предоставляет BouncyCastle. BC, например, необходим для шифрования EC. –

1

Вы должны компилировать библиотеку BC под другим именем, так как он будет иметь конфликт с встроенной в БЛ уже в Android - перекомпилировать и ссылки, как BC2 или org.BouncyCastle2.x

8

Или лучше все еще используют SpongyCastle, так как BC, поставляемый с Android, одновременно искалечен и устарел.

+5

Это все еще так? Можете ли вы быть более конкретными, чем «старые»? Можете ли вы определить калека? Ссылка SpongyCastle, которую вы включаете, также не объясняет. –

+0

Любой ответ на вопросы Сэма? – vojta