1

まず、すべてのコードが私の Linux マシンで既にテストされていることに注意してください。それを確認するための関連する単体テストがあります。しかし、コードはアンドロイドでは機能しません。

プロジェクトに独自のbouncycastle v1.48ライブラリを含めました。Androidにこのライブラリが既に埋め込まれているかどうかはわかりませんが、競合が発生しないことを願っています (?)

私は公開鍵アルゴリズムタグとして使用しています。これは、RSA_GENERALそのような秘密鍵を作成するときに役立ちます:

new PGPSecretKey(
  PGPSignature.DEFAULT_CERTIFICATION,
  publicKeyAlgorithmTag,
  publicKey,
  privateKey,
  new Date,
  identity.toString,
  symmetricKeyAlgorithmTag,
  passPhrase,
  null,
  null,
  new SecureRandom(),
  BC_PROVIDER_NAME
);

しかし、キー ペアを作成するときは、このタグを使用していません。これは関連するコードの一部です (Scala で):

val generator = KeyPairGenerator.getInstance(PUBLIC_KEY_ALGORITHM_STRING, BC_PROVIDER_NAME);
generator.initialize(KEY_SIZE_IN_BITS, new SecureRandom());
generator.generateKeyPair();

上記の公開鍵アルゴリズム文字列は、単純に文字列"RSA"です。

注: 対称鍵アルゴリズムで既に NoSuchAlgorithmException が発生していましたが、CAST5 から BLOWFISH に切り替えることで簡単に克服できました。

どこから解決策を探し始めるか、または何が問題なのかについて何か提案はありますか? ありがとうございました

4

1 に答える 1

4

プロジェクトに独自の bouncycastle v1.48 ライブラリを含めました。

それはうまくいきません。Android には独自の機能を縮小したバージョンの Bouncy Castle (主にjavax.crypto. 代わりにspongycastleに切り替えてみてください。これは、ライブラリの作成者によって書かれた spongycastle に関するStackOverflow の回答です。

spongycastle のドキュメントで説明されているように、すべてのインポートを からorg.bouncycastle.*に変更する必要がありますorg.spongycastle.*。また、プロバイダー名を指定する必要がある場所は、それを から に変更する必要があり"BC"ます"SC"

于 2013-03-28T23:51:55.007 に答える