8

我在这一行得到一个错误:

final KeyStore keyStore = KeyStore.getInstance("BKS");

我得到的错误是:

java.security.KeyStoreException: BKS not found
    at java.security.KeyStore.getInstance(Unknown Source)
    at AppListen.<init>(AppListen.java:84)

我将 bcprov-jdk16-146.jar 添加到“引用库”中,但仍然没有运气。

我的整个程序允许将安卓手机用作使用 SSL 套接字连接的计算机的鼠标和键盘。android应用程序具有相同的行,没有错误。

我究竟做错了什么?


编辑:

也许这是大多数人的常识,但它不适合我,所以对于像我这样的人来说,这就是我所做的。

我使用 BKS 的原因是因为这是 android 允许的唯一格式,但我不知道您只在 android 端需要它,您可以在服务器上使用另一种格式,然后复制密钥并将其转换为BKS 在 android 上使用,无需 BouncyCastle。

我为服务器使用了 JKS 密钥,然后使用名为 portecle 的程序将该密钥的副本转换为 BKS 以在 android 上使用。

4

2 回答 2

4

此错误表明 keytool 尝试实例化BKS密钥库,但没有加密服务提供程序 (CSP) 能够提供这样的实现。BKSkeystore 类型是BouncyCastle CSP
实现的类型, 因此您必须使用 Java 安装 BouncyCastle 提供程序。安装提供程序
并查看此内容。

于 2012-07-27T10:25:18.390 回答
3

在项目中包含BouncyCastle库并在代码中添加提供程序

Security.addProvider(new BouncyCastleProvider());
KeyStore keyStore = KeyStore.getInstance("BKS");
于 2019-05-16T08:03:35.100 回答