質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
公開鍵認証

公開鍵認証とは、公開鍵と秘密鍵の2つの鍵の組を利用する、SSHで利用される認証方式です。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

暗号化

ネットワークを通じてデジタルデータをやり取りする際に、第三者に解読されることのないよう、アルゴリズムを用いてデータを変換すること。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

Bitcoin

Bitcoinは、インターネット上で流通している電子マネーです。P2Pネットワークを通じた安価な決済コストが実現できる一方、取引時の危険性や闇市場・資金洗浄など不正取引の温床といった法的問題も抱えています。

Q&A

解決済

1回答

4459閲覧

秘密鍵から公開鍵を生成するPythonコードを知りたいです。

退会済みユーザー

退会済みユーザー

総合スコア0

公開鍵認証

公開鍵認証とは、公開鍵と秘密鍵の2つの鍵の組を利用する、SSHで利用される認証方式です。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

暗号化

ネットワークを通じてデジタルデータをやり取りする際に、第三者に解読されることのないよう、アルゴリズムを用いてデータを変換すること。

pip

pipとは、Pythonを用いて書かれているパッケージソフトのインストールや管理を行うためのパッケージマネジメントシステムです。pipを使う主なメリットは、コマンドラインインターフェースにて容易にPythonパッケージソフトをインストール可能だという点です。

Bitcoin

Bitcoinは、インターネット上で流通している電子マネーです。P2Pネットワークを通じた安価な決済コストが実現できる一方、取引時の危険性や闇市場・資金洗浄など不正取引の温床といった法的問題も抱えています。

0グッド

0クリップ

投稿2016/03/03 02:37

編集2016/03/03 06:22

はじめまして。プログラミング経験5分の者です。
質問は表題のとおりですが、経緯をお話します。
※尚、pythonのバージョンは2.7.11です。

まず、
ランダムな256bitの秘密鍵生成方法として下記(1)を試して成功しました。

今は、
この秘密鍵から512bitの公開鍵を生成する方法を知りたいです。

そのため、
こちらのサイト「http://qiita.com/monapay/items/f708f61f2ad102b548f8#2-4」を参考にしています。

しかし、

今回はecdsaと呼ばれるPythonライブラリを使用します。pipを利用してインストールするのが楽かと思います。

という文章がわかりません。

よって、
とりあえず下記(2)の状態で試していますが、成功しません。

そこで、
今回ご質問した意図は【3つ】です。

【1つ目】
上記で引用した文章を初心者にわかりやすく説明して頂ければ幸いです。

【2つ目】
早い話、pythonファイルにどう書いて、cmdにどう書けば成功するのでしょうか。つまり(2)を修正して頂ければ幸いです。

【3つ目】
一発で変換できるこのようなサイト「http://encodemaniax.com/」などがあれば知りたいです。このサイトなら(1)がcmdを使わずできて便利なのですが、(2)はできないようでして。

以上3つです。Python賢者さまがいらっしゃいましたら、なにとぞよろしくお願いいたします。


(1)


メモ帳に下記書いて「himitsu.py」で保存。
import os

def make_private_key():
return os.urandom(32) # 32 = 256/8

private_key = make_private_key()
print(private_key.encode("hex_codec"))


cmdに下記書いて実行
python C:\himitsu.py


やったね!cmdに256bitの秘密鍵が表示されたよ!

(2)


メモ帳に下記書いて「koukai.py」で保存。
import os

def make_private_key():
return os.urandom(32) # 32 = 256/8

private_key = make_private_key()
print(private_key.encode("hex_codec"))

$ pip install ecdsa

def private_to_public_key(private_key):
signing_key = ecdsa.SigningKey.from_string(
private_key, curve=ecdsa.SECP256k1)
verifying_key = signing_key.verifying_key
return verifying_key.to_string()

public_key = private_to_public_key(private_key)
print(public_key.encode("hex_codec"))


cmdに下記書いて①を実行
python C:\koukai.py


だめだぁ。成功しないよう…

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

argius

2016/03/03 05:06

Pythonのバージョンを教えていただけますか? python --versionを実行すると表示されます。
退会済みユーザー

退会済みユーザー

2016/03/03 05:21

わぁ、ほんとにご回答いただけるんですね。 うれしい。良いサイトですねこれ。 さて、そちらの文字をcmdにコピペしましたところ 「Python 2.7.11」と表示されました。 しかし不安な点があります。 Cドライブの中に《下記フォルダ》がありまして、 それぞれ中にはREADME.txtというデータがありまして、 それぞれそこには "下記version" が書いてあるんです。 《python27》"This is Python version 2.7.11" 《python34》"This is Python version 3.4.4" いったい2.7.11なのか、3.4.4なのか…(+_+)
argius

2016/03/03 05:27

README.txtの件は、Python2.7.11と3.4.4ですね。 今実行されているのは、Python2.7.11ですので、このままPython2.7.11で続けられるのでしたら、"Python3.x"タグを"Python2.x"に変更してください。 あとBitcoinというタグは関係なさそうですけど要りますか? タグはできるだけ正確につけたほうが回答が得られやすくなります。
退会済みユーザー

退会済みユーザー

2016/03/03 06:25

ありがとうございます。バージョン情報のタグ変更完了いたしました。あとbitcoinのタグですが、bitcoinの勉強において生じた疑問だったので付けておきましたです。
guest

回答1

0

ベストアンサー

Python賢者ではないですが...

【1つ目】
上記で引用した文章を初心者にわかりやすく説明して頂ければ幸いです。

pipというのは、Pythonのライブラリー管理ツール(パッケージマネージャー)です。
昨今ライブラリーやツールをインストールする際には、Pythonに限らず、このようなツールを使って行うのが一般的です。

Windowsの場合、Python2.7.11のフォルダーの下に、Scriptsがあって、その下にpipコマンドがあれば、それを使えると思います。

【2つ目】
早い話、pythonファイルにどう書いて、cmdにどう書けば成功するのでしょうか。つまり(2)を修正して頂ければ幸いです。

$ pip install ecdsaというのは、Windows以外のLinuxやMacでのコマンドを指しています。
プロンプトは、Windowsの場合は>ですが、LinuxやMacの環境では$だったりします。

つまり、$ pip install ecdsaというのは、pipコマンドでecdsaライブラリーをインストールしろ、という意味です。
なので、その行はpyファイルに書いてはいけません。

【3つ目】
一発で変換できるこのようなサイト「http://encodemaniax.com/」などがあれば知りたいです。

すみません、これは知りません。

投稿2016/03/03 06:59

argius

総合スコア9390

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2016/03/03 09:06

ご回答誠にありがとうございます。 -- >なので、その行はpyファイルに書いてはいけません。 と、仰いますと、つまり、 質問文(2)の①から$ pip install ecdsaを消すだけ。 ということですよね? ふーむ。そうして②を試みても、やはり成功しないようです。 -- ちなみに、 >Windowsの場合、Python2.7.11のフォルダーの下に、Scriptsがあって、その下にpipコマンドがあれば これはありました。 Scriptsフォルダを見ると、「pip2.7.exe」「pip2.exe」「pip.exe」というファイルと、 あとは「easy_installなんちゃら」がいくつかありました。 -- 私のプログラミング経験時間は7分(笑)しかないので、 「根本的すぎるけどまさかお前これ知らないんじゃね?」 というレベルでのご指摘などもお待ちしております。m(__)m
argius

2016/03/03 09:13

pyファイルの修正自体はそれでOKなはずです。 上手くいかないのは、 ecdsaというのはライブラリーが元から入っているものでは無いので、新たにインストールしないといけないからです。 参考にされているサイトでは、そのインストールするのにpipというツールを使うと便利と書いています。
退会済みユーザー

退会済みユーザー

2016/03/03 10:07

ありがとうございます。 ということは、 pipというツールは私のScriptsフォルダに入っているけれど、まずそのツールを使ってecdsaをインストールして、それが済んだ後で(2)を試さないといけない。 ということでよろしいでしょうか? すると、別途私が立てておくべき質問は 「pythonで、pipを使ってecdsaをインストールするには、どうしたらいいですか?」 というものになるわけですね。
argius

2016/03/03 10:33

コマンド pip install ecdsa を実行することがまさに、 「pythonで、pipを使ってecdsaをインストールする」方法です。 ただ、Windowsでのインストールの方法にもよりますが、 そのままpipが使えない可能性があります。 pip install ecdsa を実行してみて、ダメなら、 Scriptsにcdで移動して、そこでコマンドを実行してみてください。
退会済みユーザー

退会済みユーザー

2016/03/03 11:11

たびたびゴメンナサイなのですが(>_<) >pip install ecdsa を実行してみて とのこと。。 しかし、1回目のご回答で、質問文(2)の①のファイルの中から $ pip install ecdsaという行はすべて削除しましたよね? ありゃりゃ? これを削除したのに、どうすればこれは実行されるのでしょうか? ひょっとして、コマンドプロンプトに書く文字が、 質問文(2)の②ではなく、何か別になるのでしょうか? そこにpip install ecdsaを書く、、とか?       ちなみに、 >Scriptsにcdで移動 と >そこでコマンドを実行してみてください。 は、仰る意味が分かりませんでした。笑
argius

2016/03/03 11:59

(2)の②は、プログラム自体の実行です。C:\koukai.py をPythonに実行させるコマンドです。 ただ、その前に、今の環境にはecdsaが入っていないので、それをインストールしないといけないんです。 そのためには、C:\koukai.py に直接書くのではなく、コマンドプロンプト(cmd)から直接実行する必要があります。 コマンドプロンプト(cmd)にpip install ecdsaを貼り付けてenterすると、「pipコマンドを実行を実行する」ことになります。 ただ、パスが通っていないと実行できない可能性がありますので、Scriptsフォルダーに移動すれば、パスが通っていなくても実行できる可能性があります。 cdというのはフォルダーを移動するコマンドです。 ただ設定が足りなくてこれでも実行できないかも知れません。 私もpipインストールのところはあまり自信がありませんので、やはり別途質問するか、Windowsでpipをインストールする方法を調べた方が良いかもしれません。
退会済みユーザー

退会済みユーザー

2016/03/03 12:43

ありがとうございます! では、質問文の(2)の②から $ pip install ecdsa の行を消して保存し、 コマンドプロンプトにはこう書く。 python C:\koukai.py>cd Script\pip install ecdsa で、できなければ、別途質問か調べるか、ということですね('◇')ゞ
argius

2016/03/03 13:04

コマンドプロンプトの書き方はそれではダメです。 python C:\koukai.py は置いておきましょう。 まずはecdsaをインストールしないことには始まりませんから。 cdの事も一旦忘れて下さい。 で、インストールするには pip install ecdsa を実行すれば良いのですが、環境が整っていないと実行できないのです。 試しにコマンドプロンプト(cmd)で pip install ecdsa を実行してみてください。 これでインストールできれば、あとは python C:\koukai.py を実行するだけです。 もし上手くいかなければ、この先は、コマンドプロンプト(cmd)の基本についてご存知でないようですので、説明にかなり時間がかかることをご承知おきください。 もしかしたら、先にコマンドプロンプトの基本について学ばれた方が話が早いかもしれません。 「コマンドプロンプトの使い方」などで検索してみてください。
退会済みユーザー

退会済みユーザー

2016/03/03 13:49

どうもありがとうございましたm(__)m さっそく検索してみます。
退会済みユーザー

退会済みユーザー

2016/03/03 13:51

おお、インストールできましたぞ!! まずコマンドプロンプトにこれを書いて、scriptフォルダにいく。 cd C:\Python27\Scripts すると C:\WINDOWS\system32> が C:\Python27\Scripts> に変わる。 これが、scriptフォルダにいく、という意味。 でそしたら pip install ecdsa を書いてecdsaをインストール ほー!なんかインストールが始まりました。 なるほど。 最後にこれを書いて python C:\koukai.py …ありゃりゃ、できませんぞ?笑 こう表示されます。 C:\Python27\Scripts>python C:\koukai.py 2321c8f0e1f5028e861f155bbb4838fc045dc337fb9504364a8dced5d8a17931 Traceback (most recent call last): File "C:\koukai.py", line 16, in <module> public_key = private_to_public_key(private_key) File "C:\koukai.py", line 11, in private_to_public_key signing_key = ecdsa.SigningKey.from_string( NameError: global name 'ecdsa' is not defined C:\Python27\Scripts> と表示されます。(*_*)
退会済みユーザー

退会済みユーザー

2016/03/03 14:00

あ、さてはこの状態↓、これは、、、 http://www.fastpic.jp/viewer.php?file=7701293846.jpg インストールははじまったけど、できてない状態ですねきっと。 ふぁーだめだ。ぎぶあっぷ。おねむの時間ですね。 何度もお付き合い頂き誠にありがとうございました。 もう少し勉強して出直してまいります。 それでは、よい夜を。
argius

2016/03/03 14:34

とりあえず、やっていただきたかったことはできています。 話が早くて助かります。 しかし、インストールエラーは解決が難しそうですね。 これとは別に、ecdsaがインストールされていても、koukai.pyには import os の次の行に import ecdsa を追加しないと動かないと思いますので先に書いておきます。
退会済みユーザー

退会済みユーザー

2016/03/03 14:48

インストールエラーは解決したみたいです。 scriptフォルダにいくときに、 cd C:\Python27\Scripts でなく cd C:\Python34\Scripts に行ってみたら、無事こう↓なりました(*'▽') http://www.fastpic.jp/viewer.php?file=5143264703.jpg しかし、やはり(2)はできず…(´;ω;`) 目がしぱしぱします。笑
argius

2016/03/03 14:51

返信は明日で構いませんよ。 C:\Python34\Scriptsの方でインストールしてしまうと、Python3.4の方にecdsaがインストールされてしまって、今使っているPython2.7の方では相変わらずインストールされていない状態だと思います。
退会済みユーザー

退会済みユーザー

2016/03/03 23:59

おはようございます。 今日は花粉が多いようなのでご注意を。。ジュルジュル さてと。 あとはecdsaのインストールさえできれば、という状態ですね。 このエラー… 別途質問を立てておきましたので、エラーに詳しい方からのご回答をお待ちします。 解決したらこのフォームでアルギウスさんにもお知らせしますね(*'▽')
退会済みユーザー

退会済みユーザー

2016/03/04 10:49

こんばんは★ うれしいご報告!! なんと、できましたぁ! じゃーん! http://www.fastpic.jp/viewer.php?file=5572850760.jpg こちらのご回答で解決しました。 https://teratail.com/questions/28906 いやぁ…感無量です。 私も早く経験を積み人の質問に答えられるよう精進してまいります。 それでは! 昨夜は遅くまでほんとうにありがとうございました。m(__)m これからもまっすますのご活躍をお祈りいたしておりまする!
argius

2016/03/04 11:01

解決おめでとうございます。 また、詳細なご報告をありがとうございます。 私が解決できなかったインストールの問題が思ったより早く解決して良かったです。
退会済みユーザー

退会済みユーザー

2016/03/04 11:31

ふと思ったのですが、(1)で生成された秘密鍵は、(2)の公開鍵の生成に反映されているのでしょうか?? 128文字の生成のためには(2)だけで十分ですよね。 しかし質問文に挙げたこちらのサイト 「http://qiita.com/monapay/items/f708f61f2ad102b548f8#2-4」には、 >秘密鍵から公開鍵を生成する と書いてありますし、私もそのつもりでした。 つまり(2)で公開鍵を生成し、その元となる秘密鍵を把握しておきたいつもりだったのですが、、、 こんかい私が生成した(2)の公開鍵って、秘密鍵の情報はどこかにあるのでしょうか?
argius

2016/03/04 11:41

一言で言うと、秘密鍵の情報が暗号化されています。 これは「公開鍵暗号」と呼ばれる暗号化方式に関係しますので、興味がありましたら、そちらを調べてみてください。私もそれほど的確に説明できませんので...
退会済みユーザー

退会済みユーザー

2016/03/04 11:50

ですよね。別の質問だし! 失礼いたしました。(;'∀') それでは、よい週末を♪
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問