2010-04-06 9 views
6

auf Android ich eine kleine Anwendung mit bouncycastle Algorithmus zu schreiben versuche, von der BouncyCastleProvider.java es sagt, müssen wir durch den folgenden Codewie bouncycastle Algorithmus hinzuzufügen

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

den Anbieter während der Laufzeit importieren und hinzufügen

Fehler - Der Import org.bouncycastle kann nicht aufgelöst werden; während des Imports Fehler - BouncyCastleProvider kann nicht in einen Typ aufgelöst werden; Beim Aufruf von addProvider

Ich obwohl Bouncycastle ist nicht mit dem Android 1.6 SDK zur Verfügung gestellt, so dachte Installation getrennt. Wie soll ich das machen? Wenn Bouncycastle zusammen mit SDK geliefert wird, was sollte ich tun, um diese Fehler zu vermeiden? Ich benutze Android 1.6, eclipse-V3.4.0 auf winXP. Vielen Dank im Voraus

+0

Siehe meine Antwort auf eine andere ähnliche Frage: http: // stackoverflow.com/questions/4065379/how-to-create-a-bks-bouncycastle-format-java-keystore-das-enthält-ein-client-c/10026598 # 10026598 – Vipul

Antwort

2

Ich bin nicht vertraut mit dieser speziellen Bibliothek. Im Folgenden finden Sie jedoch allgemeine Anweisungen zum Einbinden einer Bibliothek, die als "jar" -Datei in ein Android-Projekt geliefert wird.

Laden Sie die JAR-Datei herunter und legen Sie sie irgendwo auf Ihre Arbeitsstation. Vielleicht möchten Sie das Root-Verzeichnis des Projekts, in dem Sie es installieren, oder vielleicht in ein 'lib' -Verzeichnis im Root-Verzeichnis einfügen.

Wählen Sie in Eclipse Projekt-> Eigenschaften und dann Java-Erstellungspfad. Klicken Sie dann auf Externe Jars hinzufügen, navigieren Sie zum Speicherort der JAR-Datei, wählen Sie sie aus, und klicken Sie auf Öffnen.

Geben Sie nun einen Code ein, der versucht, die Klassen im Jar zu verwenden. Wenn Sie Glück haben, erscheint am linken Rand ein Glühbirnensymbol. Wenn Sie darauf klicken, werden Sie aufgefordert, die korrekte Import-Anweisung oben in Ihrer .java-Datei hinzuzufügen.

Es gibt immer noch Dinge, die an dieser Stelle schief gehen können. Die Bibliothek kann java. * - oder javax. * - Inhalte verwenden, die nicht von Android bereitgestellt werden (es gibt nur eine Teilmenge dieser Bibliotheken). Es kann auch zusätzliche Bibliotheksabhängigkeiten aufweisen. Es gibt andere Gründe, warum die .jar möglicherweise nicht mit der Android-Plattform kompatibel ist.

Beachten Sie auch, dass es die Größe Ihrer .apk erhöht, um den neuen Inhalt aufzunehmen.

+0

Ich habe versucht, die Hüpfburg Glas und versucht, instance von secretKeyFactory, aber es wirft eine Ausnahme nicht solchen Algorithmus – Vamsi

+0

Das klingt wie eine lokale Ausnahme zu dieser Bibliothek, nicht ein Problem mit der Bibliothekseingliederung. –

5

Sie sollten BouncyCastle nicht explizit als Provider hinzufügen. Wie du sagst, ist es bereits in Android enthalten.

Hier ist, was ich tun, um eine BouncyCastle AES-Chiffre zu bekommen,

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

Wenn Sie in BouncyCastleProvider.java aussehen werden Sie einen Verweis auf PBEWithSHA256And256BitAES-CBC-BC zusammen mit ein paar anderen Chiffren von BouncyCastle zur Verfügung gestellt sehen.

+1

es löst eine Ausnahme NoSuchAlgorithm – Vamsi

+1

Seltsam. Ich bin mir nicht sicher, was das Problem ist. Hier ist der Code, den ich ausführe: http://upm.svn.sourceforge.net/viewvc/upm/android/trunk/src/com/u17od/upm/crypto/EncryptionService.java?view=markup. Funktioniert auf Android 1.5 und 2.1. – Adrian

+0

AES ist nicht der einzige Verschlüsselungsalgorithmus, den BouncyCastle bietet. BC ist zum Beispiel für die EC-Verschlüsselung notwendig. –

1

Sie müßten die BC-Bibliothek unter einem anderen Namen kompilieren, da es einen Konflikt mit dem integrierten BC bereits in Android hat - neu kompilieren und Referenz als BC2 oder org.BouncyCastle2.x

8

Oder besser Verwenden Sie immer noch SpongyCastle, da der mit Android ausgelieferte BC sowohl verkrüppelt als auch alt ist.

+5

Ist das immer noch wahr? Können Sie spezifischer als "alt" sein? Kannst du verkrüppelt definieren? Der von Ihnen eingeschlossene SpongyCastle-Link erklärt dies auch nicht. –

+0

Jede Antwort auf Sams Fragen? – vojta

Verwandte Themen