从ECPrivateKey和ECPublicKey对象获取十六进制字符串

时间:2019-02-21 13:16:46

标签: dart flutter pointycastle

我正在尝试使用尖的城堡通过secp256k1曲线生成公共和私有密钥对。我认为我已经成功创建了一个由ECPrivateKey和ECPublicKey组成的AsymmetricKeyPair,但是我无法获取它们对应的十六进制字符串(类似这样:

私人: ee792658c8eb1f8c3d2010ee6bc2ea328bb584fbecbfb17cf0f9103d122a8716,

公开: 041b3f87beb2559aa3ca1c1d9ebb9447e4842d21cf0c70db103acc0db27ea8c27536fc2b1405b8a16a460ca089b01de8c556825927b4890b7236e357787f3e6d54)。

当我尝试打印密钥时,无论是否使用.toString(),我得到的只是“ ECPrivateKey”的实例和“ ECPublicKey”的实例。

我一直在四处寻找实现此目的的方法,但是我找不到一个,有可能吗?

这是我的代码:

my-host

1 个答案:

答案 0 :(得分:1)

私钥和公钥是它们各自密钥的成员变量:

  ECPrivateKey privateKey = keypair.privateKey;
  ECPublicKey publicKey = keypair.publicKey;

  // in decimal
  print(privateKey.d);
  print(publicKey.Q.x);
  print(publicKey.Q.y);

  // in hex
  print(privateKey.d.toRadixString(16));
  print(publicKey.Q.x.toBigInteger().toRadixString(16));
  print(publicKey.Q.y.toBigInteger().toRadixString(16));