簡體   English   中英

從ECPrivateKey和ECPublicKey對象獲取十六進制字符串

[英]Obtain hex string from the ECPrivateKey and ECPublicKey objects

我正在嘗試使用尖的城堡通過secp256k1曲線生成公共和私有密鑰對。 我認為我已經成功創建了一個由ECPrivateKey和ECPublicKey組成的AsymmetricKeyPair,但是我無法獲取它們對應的十六進制字符串(如下所示:

私人: ee792658c8eb1f8c3d2010ee6bc2ea328bb584fbecbfb17cf0f9103d122a8716,

公開: 041b3f87beb2559aa3ca1c1d9ebb9447e4842d21cf0c70db103acc0db27ea8c27536fc2b1405b8a16a460ca089b01de8c556825927b4890b7236e357787f3e6d54)。

當我嘗試打印密鑰時,無論是否使用.toString(),我得到的都是“ ECPrivateKey”的實例和“ ECPublicKey”的實例。

我一直在四處尋找實現此目的的方法,但是我找不到,有可能嗎?

這是我的代碼:

SecureRandom secureRandom = new SecureRandom("Fortuna");
var random = new Random.secure();
List<int> seeds = [];
for (int i = 0; i < 32; i++) {
  seeds.add(random.nextInt(255));
}
secureRandom.seed(new KeyParameter(new Uint8List.fromList(seeds)));

var domainParams = new ECDomainParameters("secp256k1");

var ecParams = new ECKeyGeneratorParameters(domainParams);
var params = new ParametersWithRandom<ECKeyGeneratorParameters>(
    ecParams, secureRandom);

var keyGenerator = new ECKeyGenerator();
keyGenerator.init(params);

AsymmetricKeyPair keypair = keyGenerator.generateKeyPair();

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

print(privateKey);
print(privateKey.toString());

print(publicKey);
print(publicKey.toString());

私鑰和公鑰是它們各自密鑰的成員變量:

  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));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM