PythonはMD 5暗号辞書ライブラリを生成する

4223 ワード

機能紹介:
ある文字をパスワードの種にする
指定された長さのパスワードに接続します
さらにhash base 64等の操作を行う
最後に結果をTXTドキュメントに保存します
考え方:
1.辞書を構成する文字wordsを得る
2.長さとwordsによってパスワードを構成する
3.hash計算を行い結果を保存する
#-* coding: utf-8 -*
import hashlib
import base64
import itertools as its
import os
reload(sys)
chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
specialChars = '~!@#$%^&*()_+{}|:"<>?`-=[]\;\',./'
numbers = "1234567890"
words = chars + specialChars + numbers

def get_FileSize(filePath):
    filePath = unicode(filePath,'utf8')
    if os.path.isfile(filePath):
        fsize = os.path.getsize(filePath)
        fsize = fsize / float(1024 * 1024)
        return round(fsize, 2)
    return 0

def MD5(s):
    m2 = hashlib.md5()
    m2.update(s)
    return m2.hexdigest()
def write2File(p,s):
    f = open(p, 'a')
    f.write(s)
    f.close()
filePath = '/Users/MacOS/Documents/'

def createHash(cs,lenth):
    r =its.product(cs,repeat=lenth)
    fileIndex = 0
    for i in r:
        str_plaintext = ''.join(i) #  
        str_md5_32 = MD5(str_plaintext)
        str_md5_16 = str_md5_32[8:24]

        str_md5_32_md5_32 = MD5(str_md5_32)
        str_md5_32_md5_16 = str_md5_32_md5_32[8:24]

        str_md5_16_md5_32 = MD5(str_md5_16)
        str_md5_16_md5_16 = str_md5_16_md5_32[8:24]


        str_md5_16_base64 = base64.b64encode(str_md5_16)
        str_md5_16_base64_md5_32 = MD5(str_md5_16_base64)
        str_md5_16_base64_md5_16 = str_md5_16_base64_md5_32[8:24]

        str_md5_32_base64 = base64.b64encode(str_md5_32)
        str_md5_32_base64_md5_32 = MD5(str_md5_32_base64)
        str_md5_32_base64_md5_16 = str_md5_32_base64_md5_32[8:24]

        # Base64
        str64 = base64.b64encode(str_plaintext)
        str64_md5_32 = MD5(str64)
        str64_md5_16 = str64_md5_32[8:24]

        str64_md5_32_MD5_32 = MD5(str64_md5_32)
        str64_md5_32_MD5_16 = str64_md5_32_MD5_32[8:24]

        str64_md5_16_MD5_32 = MD5(str64_md5_16)
        str64_md5_16_MD5_16 = str64_md5_16_MD5_32[8:24]


        str64_md5_16_base64 = base64.b64encode(str64_md5_16)
        str64_md5_16_base64_md5_32 = MD5(str64_md5_16_base64)
        str64_md5_16_base64_md5_16 = str64_md5_16_base64_md5_32[8:24]

        str64_md5_32_base64 = base64.b64encode(str64_md5_32)
        str64_md5_32_base64_md5_32 = MD5(str64_md5_32_base64)
        str64_md5_32_base64_md5_16 = str64_md5_32_base64_md5_32[8:24]

        '''
        Save 2 File
        '''
        fileName = str(lenth) + '_' + str(fileIndex) + '.txt'

        fileSize = get_FileSize(filePath + fileName)
        if fileSize > 10 * 1024:# 10G
            fileIndex = fileIndex + 1
            fileName = str(lenth) + '_' + str(fileIndex) + '.txt'

        values = \
            str_plaintext + \
            ' ' + str_md5_32 + \
            ' ' + str_md5_16 + \
            ' ' + str_md5_32_md5_32 + \
            ' ' + str_md5_32_md5_16 + \
            ' ' + str_md5_16_md5_32 + \
            ' ' + str_md5_16_md5_16 + \
            ' ' + str_md5_16_base64 + \
            ' ' + str_md5_16_base64_md5_32 + \
            ' ' + str_md5_16_base64_md5_16 + \
            ' ' + str_md5_32_base64 + \
            ' ' + str_md5_32_base64_md5_32 + \
            ' ' + str_md5_32_base64_md5_16 + \
            ' ' + str64 + \
            ' ' + str64_md5_32 + \
            ' ' + str64_md5_16 + \
            ' ' + str64_md5_32_MD5_32 + \
            ' ' + str64_md5_32_MD5_16 + \
            ' ' + str64_md5_16_MD5_32 + \
            ' ' + str64_md5_16_MD5_16 + \
            ' ' + str64_md5_16_base64 + \
            ' ' + str64_md5_16_base64_md5_32 + \
            ' ' + str64_md5_16_base64_md5_16 + \
            ' ' + str64_md5_32_base64 + \
            ' ' + str64_md5_32_base64_md5_32 + \
            ' ' + str64_md5_32_base64_md5_16

        write2File(filePath + fileName, values+'
') createHash(words,4)