今回は、便利なモジュールには頼らず、最も簡単に、乱数を使って適当な暗号文を作成する方法を解説していきます。
「secrets」モジュールなどの暗号学術的に複雑で強い暗号の作成方法については次の記事を参考にしてください。
参考:【Python】secretsモジュールを用いたパスワードの作成
無料オンライン相談を活用しよう!
Pythonというプログラミング言語は機械学習の人気の高まりなどもあり、様々なスクールが無料説明会を開催しています。
その中でも「Freeks(フリークス)|業界初!10,780円のサブスク型プログラミングスクール」がオススメです。Pythonを効率よく学びたいという方はまずは適性を知るためにも無料説明会を利用しましょう。
コンテンツ
目的とサンプル
今回の目的は、ランダム関数を用いて、暗号文を作成することです。
ランダム関数を用いているため、暗号文を復号化することはできませんが、プログラミング初心者への学習には難易度も丁度よく面白いと思ってもらえると思います。
今回作成したのは、数字を入力すると、その数だけランダムな文字列の長さの暗号(パスワード)を生成するプログラムです。
こちらがサンプルです。この結果は毎回異なります。
1 2 3 4 5 |
3 AX@32tXMB;Beld PGau\A@FkHYP> G[sTWh]B\Sw |
必要な組み込み関数・モジュールについて
- 組み込み関数(ord, chr)
- モジュール(random)
これらの使い方について順番に解説していきます。
ord関数とchr関数
各文字には、ASCIIコードといって、単一の番号が割り当てられています。その番号を確認するためには、「ord」関数を用います。
逆に、番号から文字を確認するためには、「chr」関数を用います。
1 2 3 4 5 6 7 8 |
print(ord("A")) # 65 print(ord("B")) # 66 print(chr(65)) # A |
ASCIIコードをPythonで確認する方法はこちら
参考:【Python】ASCIIコードによる数値と文字列を変換する方法(ord, chr関数)
random関数
先ほどの単一の番号をランダムに選ぶことが出来れば、乱数を使った適当な暗号文が完成します。
1 2 3 4 5 6 7 8 9 10 |
import random # xの範囲(48 <= x <= 122)のランダムな整数 x = random.randint(48, 122) print(chr(48)) # 0 print(chr(122)) # z |
ここでは、詳しい解説は省略しますが、暗号で表示される文字列を、数字とアルファベット、記号のみに限定するため、ASCIIコードの番号を48から122までにします。
ランダムを使った面白いテーマに下記の記事がありますのでよろしければ参考にしてください。
参考:Pythonで学ぶ高校数学の美しい物語(モンテカルロ法)
参考:Pythonで学ぶ高校数学の美しい物語(ビュフォンの針)
暗号文の作成
暗号の作成
この関数は、暗号文を作成する関数です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
def make_angou(num): # for文の仮引数は使わない場合省略できる for _ in range(num): # 一つの暗号の文字列の長さを決める length = random.randint(10, 15) angou = "" for _ in range(length): i = random.randint(48, 122) # 番号に対応する文字を「angou」変数に足す angou += chr(i) print(angou) |
メイン関数
先ほどの関数を呼び出したり、暗号文の数を決定します。
1 2 3 4 5 6 7 |
if __name__ == "__main__": # 暗号文の数を決定する num = int(input()) # 関数を呼び出す make_angou(num) |
全体のコード
こちらはコメントなしの全体のコードです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
import random def make_angou(num): for _ in range(num): length = random.randint(10, 15) angou = "" for _ in range(length): i = random.randint(48, 122) angou += chr(i) print(angou) if __name__ == "__main__": num = int(input()) make_angou(num) """ 5 y2UmK@ar]K4Kx7M X9=jX7[a\b b?3kxF4C\Q; KK2vl8slBo1 lx>kH3eKw]V:_M """ |
まとめ
今回は、暗号文を作成する方法を解説しました。初心者には丁度いい難易度で面白かったのではないでしょうか。
次の記事では、secretsモジュールを用いて、暗号学術的に複雑で強い暗号の作成方法を解説していますので参考にしてください。
参考:【Python】secretsモジュールを用いたパスワードの作成
パソコン操作にお困りではありませんか?
ExcelやWordなど、基本的なソフトの使い方がいまいちわからないという方には、「PCHack」という講座をオススメしています。スクールの中でもコストパフォーマンスに優れ、オンラインなのでどこでも好きな時間に学習できます。
3万円ほどでPC初心者を脱出したい方は参考にしてください。
【PC初心者必見!】パソコンの勉強方法が分からないならPCHack講座がオススメ!