问题标签 [spongycastle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1654 浏览

android - 提供的密钥 (android.security.keystore.AndroidKeyStoreRSAPrivateKey) 不是 RSAPrivateKey 实例

我进行“签名”操作并具有以下代码:

执行上述操作后,我得到以下异常:

我还在同一个类中使用 Spongy Castle 库,因为我需要它用于其他目的,因此我在静态块中有以下内容:

这里有什么问题?我已经阅读了 StackOverflow 上所有具有相似性质的线程,解决方案始终是在对 Cipher 进行初始化时不使用特定的提供程序(我不这样做)并且不将密钥转换为 RSAPrivateKey(我不这样做!)。

这是否与 Spongy 注册为第一提供者有关?我没有任何想法。请分享

0 投票
1 回答
1178 浏览

java - 在 Android (spongycastle) 上读/写证书签名请求

我尝试在 Android 上编写代码以生成 RSA 密钥对,然后生成证书请求文件 (.csr),如下图所示:

在此处输入图像描述

  1. 首先我使用 spongycastle lib 生成密钥对(公钥和私钥)

    /li>
  2. 然后我使用CSRHelper我在这个链接上找到的类来生成 byte CSRder[]

    /li>
  3. 我编写代码将 byte[] 写入文件:

    /li>
  4. 最后我写代码再次读取文件:

    /li>

但我的 logcat 显示不可读的字符。

如何将此csr字节写入文件并再次读取?

0 投票
1 回答
1656 浏览

android - 将 AndroidKeyStore 条目安装到 AndroidCAStore

我使用 Android 应用程序生成KeyPair,创建CSR并将其发送到我的CA。在密钥对生成期间,我使用“AndroidKeyStore”

所以 PrivateKey 被生成并存储在 KeyStore 中。

当我从我的 CA 获得 X509Certificate(签名 CSR)时,我想使用 KeyChain API 安装 PrivateKey 和证书:

在那种情况下可以使用AndroidKeyStore吗?我读到无法从AndroidKeyStore获取 PrivateKey 。

0 投票
1 回答
3135 浏览

android - IV 用于加密转换。预期 IV 长度为 16,但为 24

有人可以告诉我为什么会收到此错误消息吗?显然这是我缺少的某种转换

预期 IV 长度为 16,但为 24

要调用它,我使用

这是程序

这是输出

0 投票
1 回答
1972 浏览

java - ECC中的Base64编码/解码加密和解密

我想测试ECC算法加密和解密。

我写代码:

  • 生成密钥对(公钥和私钥)---> 将它们写入文件(可能不安全,但我只是测试)。

  • 然后使用公钥加密我的字符串(在 Java 上编写)

  • 现在,我采用加密字符串并尝试在 Android 上对其进行解密(使用私钥)

这是我的代码:

  1. 在 Java 中加密字符串:

    /li>

我的输出加密字符串是这样的:

这是我的私钥

  1. 在Android上解密字符串

    /li>

但是我的代码没有成功解密,有问题:

我认为这可能是由于错误的编码/解码字符串 - 字节 - Base64

但是我在这个问题上没有太多经验。

0 投票
1 回答
2814 浏览

java - 如果针对 Android 3.0 及更高版本,使用 SpongyCastle 是否有优于 BouncyCastle 的优势?

如果我正确理解情况,SpongyCastle 是对 BouncyCastle 的重命名,它的创建是为了让人们能够在 Android 上包含新版本的 BouncyCastle,因为仅包含最新的 BouncyCastle jar 会导致与旧版本和精简版本的冲突Android 自带的 BouncyCastle。

但是,显然自 3.0 版(2011 年 - 6 年前!)以来,Android BouncyCastle 包已重命名为com.android.org.bouncycastle,因此现在如果您包含常规org.bouncycastle,这将不再与预先打包的剥离 BouncyCastle 冲突,您可以使用最新版本就是这样。

让我感到困惑的是,SpongyCastle 项目似乎仍然非常活跃,每当我搜索“Android 上的 BouncyCastle”或任何相关内容时,我都会从过去几年中得到很多结果,这些结果建议使用 SpongyCastle,理由是类冲突问题作为推理,即使它们(显然)早在 2011 年就已经解决了。我看到的另一个对我来说更有意义的论点是 SpongyCastle 更向后兼容,因为你不会遇到任何问题运行早于 3.0 的 Android 版本的设备。

所以我的问题是,如果您的目标不是早于 3.0 的 Android 版本,使用 SpongyCastle 胜过 BouncyCastle 是否还有任何好处?

0 投票
0 回答
215 浏览

java - java.lang.NoClassDefFoundError: org.spongycastle.util.io.pem.PemWriter

我正在使用海绵城堡库,它在 API 16+ 上运行良好。但我在 api level<16;

我添加了如下参考;

我查看了这个答案,但它对我不起作用。此外,我在我的 pro-guard 文件中添加了所需的命令,它适用于 api 16+ 很棒。

0 投票
0 回答
452 浏览

java - 在 Android Studio 上使用 AES/CBC/PKCS5Padding 和 Spongycastle 的非法密钥大小

在 Android Studio 上尝试 256 位 AES 加密。开发了一个单元测试以使用 Android Studio 3.0.1 运行。JDK 确实具有升级的本地和 USExport 策略文件。相同的代码用于 128 位 AES/CBC/PKCS5Padding,并且可以正常工作。密钥生成、加密和解密都可以在 128 位密钥强度下正常工作。256 的代码与密钥长度不同。另请注意,使用 Bouncycastle 的相同代码在具有相同 JDK 和策略文件的 Netbeans 下工作。关于 Android/Studio 平台和/或 spongycastle 的一些东西。莫名其妙。

0 投票
1 回答
622 浏览

java - Android验证签名总是返回false

我正在尝试使用 ECDSA 和 spongycastle 验证一些签名内容。这是我用来生成具有brainpoolP512t1 ec曲线的密钥对的代码:

这是我用来签名和验证签名的代码:

我正在传递使用私钥和公钥签名的简单字符串消息的字节以进行验证。然而,我总是变得虚假。我究竟做错了什么?任何帮助都深表感谢。

0 投票
1 回答
1446 浏览

android - 使用 Android 密钥库的 Spongy Castle RSA 加密/解密

尝试使用 SpongyCastle 为RSA/ECB/OAEPwithSHA-512andMGF1Padding所有支持的 Android 设备版本上的非对称加密/解密任务提供首选加密算法并遇到问题。

加密似乎工作正常。但解密证明有些麻烦:

No provider for RSA/ECB/OAEPwithSHA-512andMGF1Padding

KeyGen 规范如下:

我现在从 keyStore 中获取此值并尝试将其用于解密/加密:

似乎工作正常,但是解密是我的问题所在:

初始化decryptionCipher给了我:

java.security.ProviderException: No provider for RSA/ECB/OAEPwithSHA-512andMGF1Padding

这很奇怪,因为我的密码实例返回正常并且加密工作正常。

还尝试将提供程序指定为“BC”而不是“SC”,private exponent cannot be extracted error我认为这是设计使然。试图给出一个不受支持的算法破坏密码初始化和加密,Provider SC doesn't provide xxx那么给出了什么?

TLDR:加密密码与解密具有相同的提供者。但只有解密中断....必须有一些我在这里遗漏但似乎无法解决的问题。我已经为此工作了一段时间,因此不胜感激!

编辑:出于兴趣,我通过以下方式提供 SpongyCastle: