Opensslを使用してecdsaのペアキーを生成しようとしました。
公開鍵の長さが64バイトではなく65バイトであるのはなぜですか?
秘密鍵を作成
openssl ecparam -genkey -name secp256r1 -noout -out private.pem
公開鍵を生成
openssl ec -in private.pem -text -noout
eCキーを読む
秘密鍵:(256ビット)
priv:13:10:bc:9c:a8:3d:8b:fa:91:b2:a4:f8:e5:d1:5f:53:56:eb:16:91:86:aa:6b:c5: 16:8b:16:e9:04:4e:03:a9
pub:04:51:02:22:75:dd:3d:25:ee:b6:aa:a5:c6:c6:27:5c:07:c5:e6:e9:75:40:4a:b3: e4:cd:22:e5:cc:9a:bd:1b:14:0e:53:6a:57:9a:26:98:d2:2f:6b:a4:9b:a4:47:fe:ab: 76:99:59:26:39:ac:2b:2e:93:b3:ef:f0:8b:f5:3b:86
ASN1 OID:prime256v1
NISTカーブ:P-256
このページ によると、65バイトの公開鍵は非圧縮のバリアントです。
最初のバイト0x04がプレフィックスで、その後に232ビットの数字が続きます。
暗号の専門家ではなく、なぜこれが当てはまるのか説明できません。多分誰かがそれについて詳しく説明することができます。