Я хотел бы использовать Bouncy Castle для создания пары ключей для использования со всеми вариантами *coin.
Является ли это правильной реализацией для получения правильной кривой ECC, которую используют варианты *coin?
Org.BouncyCastle.Crypto.AsymmetricCipherKeyPair GenerateKeys(int keySize)
{
var gen = new Org.BouncyCastle.Crypto.Generators.ECKeyPairGenerator();
var secureRandom = new Org.BouncyCastle.Security.SecureRandom();
var keyGenParam = new Org.BouncyCastle.Crypto.KeyGenerationParameters(secureRandom, keySize);
gen.Init(keyGenParam);
return gen.GenerateKeyPair();
}
Ниже выдержка должна ответить на ваш вопрос.
открытый класс ECKeyPair реализует ключ { частный статический окончательный SecureRandom secureRandom = новый SecureRandom (); частная статическая окончательная кривая X9ECParameters = SECNamedCurves.getByName ("secp256k1"); частный статический окончательный домен ECDomainParameters = новый ECDomainParameters (curve.getCurve (), curve.getG (), curve.getN (), curve.getH ()); частный BigInteger priv; закрытый байт [] паб; сжатое частное логическое значение; public static ECKeyPair createNew (логическое сжатие) { Генератор ECKeyPairGenerator = новый ECKeyPairGenerator (); ECKeyGenerationParameters keygenParams = новые параметры ECKeyGenerationParameters (domain, secureRandom); генератор.инит(keygenParams); Пара ключей AsymmetricCipherKeyPair = генератор.генерироватьKeyPair (); ECPrivateKeyParameters privParams = (ECPrivateKeyParameters) keypair.getPrivate (); ECPublicKeyParameters pubParams = (ECPublicKeyParameters) keypair.getPublic (); ECKeyPair k = новая ECKeyPair (); k.priv = privParams.getD(); k.compressed = сжатый; если (сжато) { ECPoint q = pubParams.getQ (); k.pub = new ECPoint.Fp(domain.getCurve(), q.getX(), q.getY(), true).getEncoded(); } еще { k.pub = pubParams.getQ().getEncoded(); } вернуть к; } }
Посетите https://github.com/bitsofproof/supernode для более подробной информации.
var curve = ECNamedCurveTable.GetByName("secp256k1");
var domainParams = new ECDomainParameters(curve.Curve, curve.G, curve.N, curve.H, curve.GetSeed());
var secureRandom = new SecureRandom();
var keyParams = new ECKeyGenerationParameters(domainParams, secureRandom);
var generator = new ECKeyPairGenerator("ECDSA");
generator.Init(keyParams);
var keyPair = generator.GenerateKeyPair();
ns.privateKey = keyPair.Private as ECPrivateKeyParameters;
ns.publicKey = keyPair.Public as ECPublicKeyParameters;
Ник Оделл
производитель вещей7
Ник Оделл
производитель вещей7
нокте