标签: bouncycastle

在 BouncyCastle-Keystore 中导入 .pfx

我在将 .pfx 证书导入 bouncycastle-keystore 时遇到问题。错误消息显示“...篡改密钥库文件或不正确的 PKCS12 密码...”。我已经使用 Windows 的 CertMgr 导出了证书。

证书导出为 .pfx 文件。我想导入证书及其私钥,以便将它们与 tls 的客户端身份验证结合使用。

我将不胜感激任何帮助。

bouncycastle certificate x509

0
推荐指数
1
解决办法
5568
查看次数

使用 SpongyCastle 验证 ECDSA 签名

我正在尝试使用 SpongyCastle 在 Android 上验证 ECDSA 数字签名。我有一个X509Certificate包含我需要用来验证它的公钥,但我无法弄清楚如何获得PublicKey(向下转换ECPublicKey)以用于ECDSASigner该类。

我已经使用 C# 版本的 BouncyCastle 完成了这个,它看起来像这样:

ECDsaSigner signer = new ECDsaSigner();
signer.Init(false, cert.GetPubliKey());
Run Code Online (Sandbox Code Playgroud)

在 API 的 Java 版本中,该X509Certificate.getPublicKey()方法返回一个PublicKey类而不是AsymmetricKeyParameter. 但是,该ECDSASigner.init()方法需要一个CipherParameters对象。我不知道如何为 ECDSA 做到这一点。

对于 RSA 签名,我只是手动重建了一个新RSAKeyParameters对象:

RSAEngine engine = new RSAEngine();
engine.init(
    false,
    new RSAKeyParameters(
        false,
        ((RSAPublicKey) pubKey).getModulus(),
        ((RSAPublicKey) pubKey).getPublicExponent()
    )
);
Run Code Online (Sandbox Code Playgroud)

这似乎并不理想,但我认为它应该有效。但我什至不知道如何为 ECDSA 做这个等价物。我认为有更好的方法可以做到这一点,但我无法找出要使用的正确 API。

java android bouncycastle spongycastle

0
推荐指数
1
解决办法
1891
查看次数

使用 ChaCha20 加密和解密字符串

我想使用chacha20解密和加密字符串

BouncyCastleProvider 正在使用 chacha20 技术。所以我把它包括在罐子里。并尝试了代码但无法工作。

测试版

public class PBE extends AppCompatActivity {

    private static final String salt = "A long, but constant phrase that will be used each time as the salt.";
    private static final int iterations = 2000;
    private static final int keyLength = 256;
    private static final SecureRandom random = new SecureRandom();

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pbe);

        try {
            Security.insertProviderAt(new BouncyCastleProvider(), 1);
            //Security.addProvider(new BouncyCastleProvider());

            String passphrase = "The quick brown fox jumped …
Run Code Online (Sandbox Code Playgroud)

encryption android bouncycastle

0
推荐指数
1
解决办法
7147
查看次数

在 Java AES 加密中使用提供程序

这可能是一个菜鸟问题,但我对提供商的工作方式感到困惑。我尝试阅读此https://docs.oracle.com/javase/7/docs/technotes/guides/security/overview/jsoverview.html,但它对我来说不太有意义。假设我们有:

Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding", "BC")
Run Code Online (Sandbox Code Playgroud)

Cipher cipher= Cipher.getInstance("AES/CBC/PKCS5Padding")
Run Code Online (Sandbox Code Playgroud)

根据链接,听起来提供商指示了正在使用的实现,但 AES/CBC/PKCS5Padding 基本上与提供商无关吗?在这个例子中,充气城堡(我猜“BC”对应的)是否碰巧有比默认实现更有效的算法?感谢您的时间。

java encryption cryptography bouncycastle

0
推荐指数
1
解决办法
1545
查看次数