公開鍵⇔16進数表記
たまに16進数に戻す必要があるのでここではその方法を解説します。
公開鍵だけでなくnote IDとかも "note1" から始まる bech32 が使われていて、それも同じように下記の方法で変換できます。 ちなみにbech32はBitcoinのアドレス「Naitive Segwit (Segwit Address)」を示すためにも使われています
公開鍵→16進数
web
Rust
Rust製のCLIツールを利用して変換することも可能です。
JavaScript
, の関数 hex_encode, fromWords, bech32.decode 等を使って、hex = hex_encode(fromWords(bech32.decode(id).words)); 16進数→公開鍵
逆に、16進数表記にした公開鍵をnpub形式に戻すのは下記のページでできます。やり方によって手順はちょっと複雑です。
web
16進数を入力すると、npubやnote等の変換先の候補を列挙してくれる
画面入力だけで、かんたんに「鍵→HEX」「HEX→鍵」の変換ができます。
「HEX→鍵」は、pubkey、privatekey、noteのどれでもできます。privatekeyを入力する場合の信用はご自身で。
左のEncodeで「Data」を選択する。
「Tag」に「npub」を入力する。
「Data」に16進数表記されたpubkeyを入力する。
「Encode」をクリックする。
右の方の「Bech32」の「Encoded data」に変換された元の公開鍵が表示されます。
ついでにQRコードも表示されます。QRコードの文字列はbitcoinの習慣に従って全て大文字になっています。
Rust
アルゴリズム
この16進数表記から元に戻すアルゴリズムはNIP-19に定義されています。