当前位置: 首页 > 知识库问答 >
问题:

在BouncyCastle中导入公共/私有ECDH密钥

蓬长恨
2023-03-14

我正在尝试在BouncyCastle中导入公共和私有ECDH密钥。为了导入公钥,我使用了下面的C#代码,代码运行良好:

byte[] pc = HexStringToByteArray(PUBLIC_KEY);
var ecdp = TlsEccUtilities.GetParametersForNamedCurve(NamedCurve.secp256r1);
var basePoint = TlsEccUtilities.ValidateECPublicKey(TlsEccUtilities.DeserializeECPublicKey(null, ecdp, pc));
SubjectPublicKeyInfo subinfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(basePoint);
ECPublicKeyParameters publicKey = (ECPublicKeyParameters)PublicKeyFactory.CreateKey(subinfo);

公钥:042E3E5CCF6B9AB04BE7A22F3FACCDE73C87E87155394A34815408A896CA18A374DAC669AF36220FC863767F4AF47507C5BC221FC4A19874DAF39B074E3EB8

私钥:be3f9bff87973356d04dad279e21535925c3656db011c9ae76b5a7f09ef8d9de

但是我找不到导入私钥的解决方案。你能帮我解决这个问题吗?

共有1个答案

酆耀
2023-03-14

Finlay i找到了一个解决方案:

// Import public key
byte[] pc = HexStringToByteArray(PUBLIC_KEY);
var ecdp = TlsEccUtilities.GetParametersForNamedCurve(NamedCurve.secp256r1);
var basePoint = TlsEccUtilities.ValidateECPublicKey(TlsEccUtilities.DeserializeECPublicKey(null, ecdp, pc));
SubjectPublicKeyInfo subinfo = SubjectPublicKeyInfoFactory.CreateSubjectPublicKeyInfo(basePoint);
ECPublicKeyParameters publicKey = (ECPublicKeyParameters)PublicKeyFactory.CreateKey(subinfo);

// Import private key
BigInteger bi = new BigInteger(HexStringToByteArray(PRIVATE_KEY));
ECPrivateKeyParameters privateKey = new ECPrivateKeyParameters(bi, publicKey.Parameters);
 类似资料:
  • 我有这样的代码来导入一个ECDH键: 这是可行的,但是它只返回私钥,而不是整个密钥对。如何从私钥中导出公钥?

  • 问题内容: 我使用以下步骤创建了一个带有一对私钥/公钥的新Java密钥库,供具有TLS的Java(内部)服务器使用。请注意,证书是自签名的: 1)使用AES256生成密钥 2)生成CA的证书请求 3)生成自签名有效期10年 4)使用KeyStoreExplorer之类的程序将对(私钥和自签名证书)导入新的JKS中 这可行,但是我想在不使用GUI的情况下实现最后一步。 我知道如何仅导入自签名证书:

  • 2)生成CA证书请求 3)生成自签有效期-10年 4)使用KeyStoreExplorer这样的程序将密钥对(私钥和自签名证书)导入到新的JKS中

  • 我有一个使用BouncyCastle作为安全提供者的应用程序,但是我想切换到另一个直接使用OpenSSL(consecrypt)的应用程序。我遇到的问题是,我正在使用BouncyCastle提供的密钥生成器中的ECDH“密钥”,但在我的其他库中没有类似的密钥生成器。 为了比较这两者,我将使用两种方法解码这些点,输入如下- 为提高可读性而添加换行符 使用BouncyCastle方法- 返回的是。返回

  • 在SSO的实现中,我使用了bouncycastle(JAVA)进行签名、加密、解密和签名的验证。我有原始PGP公钥和私钥,我需要将它们存储在Java Keystore中。这些PGP公钥没有证书。 我知道对于公钥(根据Keystore的javadoc:http://docs.oracle.com/javase/6/docs/api/java/security/keystore.html),我必须创建

  • 我正在尝试使用BouncyCastle在运行mbedTLS和Java的嵌入式设备之间进行ECDH。当我比较生成的密钥长度时,我得到了由mbedTLS制作的66字节密钥和由BC制作的65字节密钥。附加伪代码: MbedTLS: 当我将MbedTLS密钥加载到Java中时,它会抛出java.lang.IllegalArgumentException:无效的点编码0x41: 我尝试在Java和MbedT