1

首先请注意,所有代码都已经在我的 linux 机器上测试过了。有相关的单元测试来确认。但是该代码不适用于android。

我在我的项目中包含了我自己的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
);

但是在创建密钥对时我没有使用这个标签,因为创建是从 java.security 发生的,而不是从 bouncycastle 发生的。这是相关代码的一部分(在 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),Android 将使用它的库,而不是您的库。尝试改用海绵城堡这是图书馆作者写的关于海绵城堡的 StackOverflow 答案

如 spongycastle 文档中所述,您必须将所有导入从 更改org.bouncycastle.*org.spongycastle.*。此外,任何需要提供提供者名称的地方,都需要将其从 更改"BC""SC".

于 2013-03-28T23:51:55.007 回答