1

BouncyCastle ライブラリを使用して C# で ECDSA を実装していますが、TestECDsa192bitPrime() の例を理解するのに苦労しています。

FpCurve curve = new FpCurve(
  new BigInteger(
    "6277101735386680763835789423207666416083908700390324961279"), // q
  new BigInteger(
    "fffffffffffffffffffffffffffffffefffffffffffffffc", 16), // a
  new BigInteger(
    "64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1", 16)); // b

ECDomainParameters parameters = new ECDomainParameters(curve,
  curve.DecodePoint(Hex.Decode(
    "03188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012")), // G
    new BigInteger(
      "6277101735386680763835789423176059013767194773182842284081")); // n

ECPrivateKeyParameters priKey = new ECPrivateKeyParameters(
  "ECDSA",
  new BigInteger(
    "651056770906015076056810763456358567190100156695615665659"), // d
  parameters);

ParametersWithRandom param = new ParametersWithRandom(priKey, k);
ECDsaSigner ecdsa = new ECDsaSigner();
ecdsa.Init(true, param);
curve.DecodePoint(Hex.Decode(
  "0262b12d60690cdcf330babab6e69763b471f994dd702d16a5")), // Q
  parameters);

上記の例では、BouncyCastle が G( Basepoint) と Q( public key) を直接計算する方法を示しました。

4

1 に答える 1