いつの間にか一ヶ月近く更新していなかった...ので、久しぶりにプログラム的な話題を。とは言っても、たいしたことではありませんが(^^ゞ
ウェブ上のいろいろなサービスに登録するとき、パスワードを登録するのですが、毎回パスワードを考えないと駄目だし、記号が必ず入っていないと駄目とか、何故か6文字以上8文字以内とかいう謎の制限があったりして考えるのが面倒だったので python で簡単なのを作ってみました。
import os, string, random from optparse import OptionParser, make_option option_list = [ make_option( '-n', '--num', action='store', type='int', dest='num', help=u'使用する桁数', default=8 ), make_option( '-u', '--upper', action='store_true', dest='upper', help=u'大文字だけを使う', default=False ), make_option( '-l', '--lower', action='store_true', dest='lower', help=u'小文字だけを使う', default=False ), make_option( '-c', '--code', action='store_true', dest='code', help=u'記号[' + string.punctuation + u']を使う', default=False ), make_option( '-d', '--digits', action='store_true', dest='digits', help=u'数字を使う', default=False ), make_option( '-a', '--all', action='store_true', dest='all', help=u'全部使う', default=False ), ] def main(): parser = OptionParser( usage = u'%prog [options]', description = u'乱数生成', option_list = option_list ) (options, args) = parser.parse_args() s = '' if options.upper: s = string.ascii_uppercase elif options.lower: s = string.ascii_lowercase else: s = string.ascii_letters if options.code: s += string.punctuation if options.digits: s += string.digits if options.all: s = string.ascii_letters + string.punctuation + string.digits if len(s) > 1 s=string.ascii_letters l = list(s) n = options.num if n < 1: n = 1 print u''.join( l[:n] ) if __name__=='__main__': main()
とまぁ、かなり適当な乱数で、しかも一度使った文字は必ず出てこないというあれな乱数ですが(^^ゞ一応使えるかな~と
しかし、パスワードに日本語文字列を使える日は来るのかな?
コメントを投稿する