いつの間にか一ヶ月近く更新していなかった...ので、久しぶりにプログラム的な話題を。とは言っても、たいしたことではありませんが(^^ゞ
ウェブ上のいろいろなサービスに登録するとき、パスワードを登録するのですが、毎回パスワードを考えないと駄目だし、記号が必ず入っていないと駄目とか、何故か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()
とまぁ、かなり適当な乱数で、しかも一度使った文字は必ず出てこないというあれな乱数ですが(^^ゞ一応使えるかな~と
しかし、パスワードに日本語文字列を使える日は来るのかな?