Как сгенерировать пару ключей ECDSA? ⇐ C#
Как сгенерировать пару ключей ECDSA?
How to generate an ECSDA key pair using the SecP256r1 curve in C# ??
Currently, I am using Bouncy Castle
Below is the code, that I am using to generate the ECSDA private key.
// Create ECDSA key pair generator var ecKeyPairGenerator = new ECKeyPairGenerator(); var genParam = new ECKeyGenerationParameters(SecObjectIdentifiers.SecP256r1, new SecureRandom()); ecKeyPairGenerator.Init(genParam); AsymmetricCipherKeyPair ecKeyPair = ecKeyPairGenerator.GenerateKeyPair(); // Convert Private Key to PEM format string privateKeyPem = ConvertToPem(ecKeyPair.Private); public string ConvertToPem(AsymmetricKeyParameter privateKey) { StringWriter stringWriter = new StringWriter(); // Manually construct PEM format for EC private key PemWriter pemWriter = new PemWriter(stringWriter); PemObject pemObject = new PemObject("EC PRIVATE KEY", EncodeEcPrivateKey(privateKey)); pemWriter.WriteObject(pemObject); return stringWriter.ToString(); } private byte[] EncodeEcPrivateKey(AsymmetricKeyParameter privateKey) { PrivateKeyInfo privateKeyInfo = PrivateKeyInfoFactory.CreatePrivateKeyInfo(privateKey); return privateKeyInfo.ToAsn1Object().GetEncoded(); } when I go to read the private key which I generated, I am getting an error
string privateKeyContent = File.ReadAllText(@"C:\ZatcaKeys\privatekey.txt"); byte[] inArray = null; using (TextReader reader = new StringReader(privateKeyContent)) { Org.BouncyCastle.OpenSsl.PemReader pemReader = new Org.BouncyCastle.OpenSsl.PemReader(reader); PemObject pemObject = pemReader.ReadPemObject(); if (pemObject != null) { AsymmetricKeyParameter privateKey = (AsymmetricKeyParameter) PrivateKeyFactory.CreateKey(pemObject.Content); ISigner signer = SignerUtilities.GetSigner("SHA-256withECDSA"); signer.Init(forSigning: true, privateKey); signer.BlockUpdate((byte[])(object)array, 0, array.Length); inArray = signer.GenerateSignature(); } } Org.BouncyCastle.OpenSsl.PemException: 'problem creating EC private key: System.NullReferenceException: Object reference not set to an instance of an object. at Org.BouncyCastle.Security.PrivateKeyFactory.CreateKey(PrivateKeyInfo keyInfo) at Org.BouncyCastle.OpenSsl.PemReader.ReadPrivateKey(PemObject pemObject)'
Источник: https://stackoverflow.com/questions/780 ... a-key-pair
How to generate an ECSDA key pair using the SecP256r1 curve in C# ??
Currently, I am using Bouncy Castle
Below is the code, that I am using to generate the ECSDA private key.
// Create ECDSA key pair generator var ecKeyPairGenerator = new ECKeyPairGenerator(); var genParam = new ECKeyGenerationParameters(SecObjectIdentifiers.SecP256r1, new SecureRandom()); ecKeyPairGenerator.Init(genParam); AsymmetricCipherKeyPair ecKeyPair = ecKeyPairGenerator.GenerateKeyPair(); // Convert Private Key to PEM format string privateKeyPem = ConvertToPem(ecKeyPair.Private); public string ConvertToPem(AsymmetricKeyParameter privateKey) { StringWriter stringWriter = new StringWriter(); // Manually construct PEM format for EC private key PemWriter pemWriter = new PemWriter(stringWriter); PemObject pemObject = new PemObject("EC PRIVATE KEY", EncodeEcPrivateKey(privateKey)); pemWriter.WriteObject(pemObject); return stringWriter.ToString(); } private byte[] EncodeEcPrivateKey(AsymmetricKeyParameter privateKey) { PrivateKeyInfo privateKeyInfo = PrivateKeyInfoFactory.CreatePrivateKeyInfo(privateKey); return privateKeyInfo.ToAsn1Object().GetEncoded(); } when I go to read the private key which I generated, I am getting an error
string privateKeyContent = File.ReadAllText(@"C:\ZatcaKeys\privatekey.txt"); byte[] inArray = null; using (TextReader reader = new StringReader(privateKeyContent)) { Org.BouncyCastle.OpenSsl.PemReader pemReader = new Org.BouncyCastle.OpenSsl.PemReader(reader); PemObject pemObject = pemReader.ReadPemObject(); if (pemObject != null) { AsymmetricKeyParameter privateKey = (AsymmetricKeyParameter) PrivateKeyFactory.CreateKey(pemObject.Content); ISigner signer = SignerUtilities.GetSigner("SHA-256withECDSA"); signer.Init(forSigning: true, privateKey); signer.BlockUpdate((byte[])(object)array, 0, array.Length); inArray = signer.GenerateSignature(); } } Org.BouncyCastle.OpenSsl.PemException: 'problem creating EC private key: System.NullReferenceException: Object reference not set to an instance of an object. at Org.BouncyCastle.Security.PrivateKeyFactory.CreateKey(PrivateKeyInfo keyInfo) at Org.BouncyCastle.OpenSsl.PemReader.ReadPrivateKey(PemObject pemObject)'
Источник: https://stackoverflow.com/questions/780 ... a-key-pair
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как создать дочернюю пару ключей из главной пары ключей с помощью модуля Pycryptodome?
Anonymous » » в форуме Python - 0 Ответы
- 24 Просмотры
-
Последнее сообщение Anonymous
-