2011-12-25 18 views
5
cipher = Cipher.getInstance("Blowfish"); 

例外をスローします。java.security.NoSuchAlgorithmException:Cipher Blowfishの実装が見つかりません。 アンドロイドのブローフィッシュ暗号化

は、私は両方のlocal_policy.jarをチェックしたUS_export_policy.jarが存在し、彼らはJavaのインストールの時点から変化しませんでした。この問題の原因は何ですか?

編集:

Object[] o = Security.getAlgorithms("Cipher").toArray(); 
    for (int i=0; i<o.length; i++) { 
     System.out.println((String)o[i]); 
    } 

私はこのコードを実行すると、私は「フグ」せずにリストを取得しますが、このようなDESやRSAなどのアルゴリズム名の中で、このような「1.2.840.113549.1.1.7」など、いくつかの未知の名前がありますそしてそのように。なぜそこにブローフィッシュがないのですか、それともその数字に隠されていますか?

答えて

2

Yeap、私は解決策を見つけて、ちょうどGNU暗号ライブラリを使用することができませんでした。それはうまく動作します。

2

cipher = Cipher.getInstance("Blowfish")

唯一のAndroid 2.3以降で動作しますので、あなたの目標は、Android 2.3を下回っていることもありか?

EDIT:あなたが2.3に構築するかの4.0 ICSを言うだけでなく、あなたがたManifest.xmlにこのような何かを追加することができます下のデバイスをサポートするようにしたい場合:

<uses-sdk android:minSdkVersion="3" /> 
<uses-sdk android:targetSdkVersion="14" /> 

唯一の問題は、あなたがしなければならないですBlowfishを2.3以下の誰かのための暗号化方法の有効な選択肢(unclickable/greyed)ではないオプションとして提供しています。試して!それを構築し、さまざまなSDKバージョンで試してみてください。がんばろう!

+0

私はAndroid 2.1を使用していますが、どうすればAndroid 2.1でBlowfishを使用できますか? – Sergey

+0

残念ながら、あなたはできません。しかし、あなたは常に2.3をターゲットにできますが、このようなSDKのバージョンを低くすることができます。私は解決策として上の編集でコードを掲載します。 – TryTryAgain

+0

それは問題です、私は2.1プラットフォームが必要です – Sergey

2

あなたは完全なプラットフォームのサポートをしたい場合は、私が提案できる唯一の解決策は、外部のパッケージです。

のAndroidははBouncyCastleの取り除かバージョンが付属しています。バージョンの進歩に伴い追加機能が追加されていると私は信じています。

Androidのバージョンが同じ名前を使用していますしかし、アンドロイドに完全はBouncyCastle jarファイルをインポートすることは非常に多くの問題が発生します。

私が使用しているソリューションは、SpongyCastleを使用することです。私はこれまでこれを利用していましたが、ソースコードを見直して変更を加えていないことを確認しました。

インストールするためのガイド

How to include the Spongy Castle JAR in Android?
2

のlocal_policy.jarそしてたUS_export_policy.jarは、Androidに関連しません。意味のある結果を得るには、のアルゴリズムリストコードをAndroidで実行する必要があります。他にも触れたように、Android JCEプロバイダはBouncy Castleに基づいていますが、すべてのアルゴリズムは含まれていません。すべてのアルゴリズムを使用できるようにするには、アプリケーションにフルlibをバンドルする必要があります。これをより簡単に行うにはSpongy Castleを使用してください。あなたがした後、あなたが必要とする唯一の変更は、「SC」としてプロバイダを指定するには、次のとおりです。

Cipher c = Cipher.getInstance("Blowfish", "SC"); 
0

私はアンドロイドアプリケーションでブローイング暗号化を使用しました。なぜ私は知りませんが、ブタの暗号化はアンドロイドの賑やかな城の図書館からコメントされています。

私はbouncy castleソースをダウンロードしなければなりませんでした。私はBCからBC2にプロバイダ名を変更し、パッケージ名をbouncycastle2に変更して、すでにAndroid SDKにあるものと衝突しないようにしました。次に、このカスタムのBouncy Castle jarを新しいjarファイルとしてアプリケーションに追加しました。

関連する問題