TOP
55.42score

tadajam

【NEM/XEM】秘密鍵から公開鍵を作成する(Ed25519)

あ…ありのまま、今起こった事を話すぜ!
な…何を言っているのかわからねーと思うが、おれも何をやっているのか分からなかった…
頭がどうにかなりそうだった…
RSAだとかDSAだとかそんなチャチなもんじゃあ断じてねえ
もっと恐ろしいものの片鱗を味わったぜ…

ということで今回は、Ed25519を使って秘密鍵から公開鍵を作成します。
暗号に関して全くの素人なので、正直何をやってるのか分かりません。
公開鍵生成時の値の動きを追ったので、秘密鍵がどのように変換されていったかを、ただありのまま残します。

まず、答え合わせ出来るように、/account/generateでキーペアを作成します。

ここに画像が表示されない場合はすでに削除されているか直接のリンクを拒否されている可能性があります

1.秘密鍵
00852dbe3b57e2cb9285acf58a75e3cf12122fef846b59decc86a0a6b56a048e69

2.SHA3(512bit)で秘密鍵のハッシュ値を計算
先にリトルエンディアン(←訂正しました)のbyte配列へ変換してからハッシュ値を計算します。
b9bde1d5e30d8cdf682adf7e902d2a7440af6440fbdbb9c28c21d53577f88fe01afc0634decb469386a8b2bdb32be004b1c4e7739bcabfecb5bbeb4f3da3de4d

3.上記2をbyte配列に変換して一部調整
インデックス0と31に何かやります。
署名のあたりでよく出てくるのですが、この作業が何なのかは謎です。
d[0] &= 248;
d[31] &= 127;
d[31] |= 64;

b8bde1d5e30d8cdf682adf7e902d2a7440af6440fbdbb9c28c21d53577f88f601afc0634decb469386a8b2bdb32be004b1c4e7739bcabfecb5bbeb4f3da3de4d

4.上記3のbyte配列を元にEd25519の準備?
lengthが16の64bit浮動小数点数配列を4つ作成します。
何か値が入ってますが、中身が何なのかは謎です。

5.上記4を元に計算
82052a48c05193da8ea6c94d2974539670befd0b39f6697fe4d6f3fc92940691

まぁ暗号なんてものは中身を理解していたとしても、素人が自前で実装とかしてもろくなことはありません。
つまり、アレです。
理解してなくても良い。良いのです。

#ビットコイン #暗号通貨 #ブロックチェーン #NEM

.

最終更新日:2016-11-23 02:28

コメント (2)

  • tadajam

    あれ、本当ですね。なぜわざわざ明記したのか。。社畜終了後確認して訂正します。ご指摘ありがとうございます。

  • tomotomo9696

    どうやらhashするとき、リトルエンディアンのバイト列に変換しなきゃダメなようです

  • コメントを投稿するにはログインしてください