【发布时间】:2015-08-24 06:13:47
【问题描述】:
我试图了解给定密钥的 EC 公钥计算。在这个问题之后,我找到了well explained answer,但是(经常发生)出了点问题。根据之前的回答和this document,我使用以下Perl脚本进行计算:
#!/usr/bin/perl
use strict;
use warnings;
use Math::BigInt;
my $d_hex = "18E14A7B6A307F426A94F8114701E7C8E774E7F9A47E2C2035DB29A206321725";
my $d_num = Math::BigInt->new("0x$d_hex");
my $g_hex = "0479BE667EF9DCBBAC55A06295CE870B07029BFCDB2DCE28D959F2815B16F81798483ADA7726A3C4655DA4FBFC0E1108A8FD17B448A68554199C47D08FFB10D4B8";
my $g_num = Math::BigInt->new("0x$g_hex");
my $q_num = $d_num->copy()->bmul($g_num);
my $q_hex = $q_num->as_hex();
# Expect: 0x0450863ad64a87ae8a2fe83c1af1a8403cb53f53e486d8511dad8a04887e5b23522cd470243453a299fa9e77237716103abc11a1df38855ed6f2ee187e9c582ba6
# Result: 0x479be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798611c24f290d443a7c839f40d5512f071e48c9c424b038039d222fa320142ebdd
print "$q_hex\n";
这里的预期结果是指使用 C 语言编写的代码从先前建立的答案计算的结果。如您所见,结果是不同的。我做错了什么?
【问题讨论】:
标签: perl cryptography public-key elliptic-curve