问题标签 [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.
java - 从 Base64 编码的字符串中检索 ECC 公钥
我一直在尝试创建一个java.security.PublicKey
使用 Base64 编码的 ECC 公钥的实例。
MainActivity.java
日志猫:
进一步检查:
在 Logcat 中,在打印解码后的字节时,它们实际上与服务器上的不同:
在 python 控制台中:
如果有人可以解释这种异常的原因,并且还可以帮助我在小片段上PublicKey
从字符串中获取实例,那就太好了。
参考:
http://www.programcreek.com/java-api-examples/index.php?api=org.bouncycastle.asn1.ASN1InputStream
http://www.bouncycastle.org/wiki/display/JA1/Elliptic+Curve+Key+Pair+Generation+and+Key+Factories
提前致谢!!
更新:
当尝试使用下面的行加载 ASN1Primitive 时,它会引发以下异常:
例外:
android - 在 Android 应用程序中使用 Java SDK
所以我正在构建的应用程序必须使用特定的库。不幸的是,这个库在其中使用了 bouncycastle。众所周知,这不适用于 Android。有没有办法解决这个问题?有人建议我构建一个服务层来与库 SDK 交互,但我不知道从哪里开始,也不知道那到底是什么。
java - Spongycastle 将证书写入 PEM 然后读取它
我在读取使用 SpongyCastle 生成并写入磁盘的证书的 PEM 文件时遇到问题。
我正在使用以下功能保存我的证书
这似乎工作正常。
现在,当我尝试使用 `PEMParser 读取此文件时,会引发异常。我正在使用以下函数来读取文件。
大多数时候异常的原因是
但有时我会得到这个
我不知道我做错了什么。文件输出看起来不错。它的格式是这样的
我究竟做错了什么?
编辑
如果我使用 将文件读入字符串BufferedReader
,这就是输出
所以我想读取的数据是正确的。
java - 如果您知道曲线名称和原始私钥/点,如何构造 PrivateKey?
要求:对于给定的命名曲线,发送尽可能少的数据,以便接收方可以构造 EC PrivateKey。
我目前在 Android 上使用 BouncyCastle/SpongyCastle。这是我到现在才明白的。
现在,使用 Bouncy/Spongy 城堡,我得到了私钥的实际点,而没有 derEncoding 中存在的任何其他信息。
问题:如何仅使用点D ( privateKeyParam.getD()
) 和曲线名称重建 PrivateKey 对象?使用曲线名称,我可以获得 ECCurveParameters。
编辑:我能够ECPrivateKeyParameters
使用私钥点 ( praram.getD()
) 构建,但仍然无法弄清楚如何从ECPrivateKeyParameters
.
java - 使用 SpongyCastle 验证 ECDSA 签名
我正在尝试使用 SpongyCastle 在 Android 上验证 ECDSA 数字签名。我有一个X509Certificate
包含我需要用来验证它的公钥,但我不太清楚如何获取PublicKey
(向下转换ECPublicKey
)以用于ECDSASigner
该类。
我使用 C# 版本的 BouncyCastle 完成了这项工作,如下所示:
在 API 的 Java 版本中,该X509Certificate.getPublicKey()
方法返回一个PublicKey
类而不是AsymmetricKeyParameter
. 但是,该ECDSASigner.init()
方法需要一个CipherParameters
对象。我不知道如何为 ECDSA 执行此操作。
对于 RSA 签名,我只是手动重建了一个新RSAKeyParameters
对象:
这似乎并不理想,但我认为它应该工作。但我什至不知道如何为 ECDSA 做这个等价物。我认为有更好的方法可以做到这一点,但我无法确定要使用的正确 API。
java - Android 与使用 SSL 和 Bouncy Castle 的服务器通信
我知道这不是那么困难,但非常不幸的是,我从昨天开始就被困在这里并与之抗争,我已经按照这个Android 教程中的相互身份验证,在资源中放置一个密钥库并尝试通过 SSL 连接到我的服务器,但是得到以下异常
java.lang.RuntimeException:org.spongycastle.jcajce.provider.asymmetric.x509.CertificateFactory$ExCertificateException
我已将我的sslapptruststore.pfx
文件放在res/raw/sslapptruststore.pfx
并使用这段代码
我也搜索过,但其他人正在使用.bks
.
任何帮助表示赞赏。
java - 可以在没有 AlgorithmParameterSpec 的情况下使用 KeyAgreement 吗?
在我使用SpongyCastle的 Android 应用程序中,我想使用特定的椭圆曲线( prime192v1 ) 执行ECDH 密钥交换,并且我正在使用此代码生成私有和公共参数的字节 [] 表示:
现在让我们假设 Alice 和 Bob 将他们的私钥保存在本地,交换pubK1
并pubK2
希望继续设置共享密钥(他们现在拥有两个密钥的byte[]
格式)。我将只描述爱丽丝的情况,至于鲍勃,这是相同的:
我的问题来了-使用以下代码,我设法为 Alice 和 Bob 获得了相同的共享密钥
但我没有指定我的特殊曲线prime192v1
如果我尝试以这种方式提供:
抛出异常说
为什么我不能提供我想要的参数?是否以KeyAgreement
某种方式从私钥中推断出这一点?
谢谢!
java - Android 在 X.509 证书中验证 CA 签名
我有一个根 CA 证书和一个由 CA 签名的用户证书。在使用 Certutil 或 OpenSSL 的 Windows 下,我可以验证 CA 在用户证书签名上的签名是否正常。现在我正在尝试在 Android 下验证相同的签名。
我使用海绵城堡,但我不确定这一步是否完全必要。我使用 ECDH 384 位密钥对。签名是“SHA384WITHECDSA”。我可以生成自签名证书并通过 certificate.verify 方法或通过计算签名来验证其签名:
同理可以查看CA证书,也是自签名证书:
现在我想使用 CA 证书的公钥检查用户证书。但上述验证方法都不起作用:
所以目前我只能检查自签名证书:(我原以为在这里使用 RootCaX509Cert.getPublicKey() 作为密钥会起作用,但事实并非如此。也许我误解了这个 CA 签名验证应该如何完成?
java - Serpent GCM 充气城堡在 Android 上的实现非常慢
我使用最新的Bouncy Castle资源来实现 Serpent GCM 加密。
它在我的台式机(Windows Core i7)上完美运行。加密 5Mb 文件大约需要 190 毫秒。但是突然之间,在三星 Galaxy 4 平板电脑(Android 5.0.1)上部署的相同代码需要 40 秒才能对同一文件进行相同的加密。我们试用了华为Acend G300(Android 2.3.6),仅需17秒。
我们还用Spongy Castle测试了相同的加密,不幸的是我们没有得到更好的性能。
- 您能否告诉我为什么它与台式机有如此巨大的不同,以及为什么在功能更弱的华为设备上的加密时间比三星 Galaxy s4 平板电脑上的更快?
- 如果有什么方法可以提高代码在 Android 上的性能?
非常感谢您的帮助!
java - 如何将 PEM 公钥转换为 DER 公钥?
我从我的 REST API 收到一个公钥,该公钥以 PEM 编码。现在,我需要将编码更改为 DER 以便将其存储为PublicKey
对象。但是,不幸的是,我收到以下错误:
java.lang.IllegalArgumentException:getInstance 中的未知对象:org.spongycastle.asn1.ASN1Integer
错误指向这一行:
公钥如下所示:
这是我的代码: