「秘密」は全角でと言われて困っている。全角乱数生成ツールを作ろうかな pic.twitter.com/CHcOJLCGMS
— Haruhiko Okumura (@h_okumura) 2013, 12月 21
(全角乱数発生ツール,速攻で作った)
— Haruhiko Okumura (@h_okumura) 2013, 12月 21
「秘密の質問」とは何かしらのアカウントを作成する際に尋ねられる質問である。正直に答えてしまうとソーシャルエンジニアリングの餌食になるので奥村先生のように乱数で答える人もいる。そこで私も全角かな乱数生成ツールをPythonで作ってみることにした。Unicodeを気軽に扱えるのはPython3系統ならではの強みである。
import random import os hira = "".join([chr(x) for x in range(ord("あ"), ord('ん')+1)]) kana = "".join([chr(x) for x in range(ord("ァ"), ord('ヶ')+1)]) #cjk_kanji = "".join([chr(x) for x in range(19968, 40959+1)]) allmoji = hira + kana while True: try: length = int(input("文字列の長さ: ")) for _ in range(15): print("".join([random.SystemRandom().choice(allmoji) for x in range(length)])) break except ValueError: print("適切な数字を入力してください...")
出力例としては
文字列の長さ: 15 トひソぃョノルナじゃゃサトょダ るフデゾズゎリダネぐべふサろロ ゑベわクびたオきガべしケゃイご ねやせヮヴニへゲヤンにィぃッヲ けむくヮんふうヅぽッぜはネワヨ キワうおゎビレゎじべゆれゼっし くモントクぼぱジガろべウさゅあ りモメゆニつヅケナぞユやミデご いワぷゴべハラゐヵヵうまクシヴ しぎニぽばやゾッけとグりぇぐア ソォげバロゲリゾイヲプォづヌヴ けぴぇトかかパでどぢヌネコマフ てろゲにばゃんゆダズピヅとソヅ シゅバエとヒすヴハヵゎソおアト ぼにうユそポェへぢフバばュィぞ
となる。漢字も試してみたが文字化けしたような感じになるのでコメントアウトで外している。