# -*- coding: utf-8 -*-
# Create hash-based password.
import hashlib
allAlphaList = [chr(x) for x in range(97, 123)]
def Hash(password):
sha = hashlib.sha512()
sha.update(password.encode('utf-8'))
return sha.hexdigest()
def Place(passwordHex, digitListUsed, mapUpAlphaListUsed, mapLowAlphaListUsed):
placeList = ''.join(filter(str.isalpha, passwordHex)).replace('a', '1').replace('b', '1').replace('c', '2').replace('d', '2').replace('e', '3').replace('f', '3')
passwordPlaced = ''
for n in placeList:
try:
if n == '1':
passwordPlaced += digitListUsed.pop()
elif n == '2':
passwordPlaced += mapUpAlphaListUsed.pop()
elif n == '3':
passwordPlaced += mapLowAlphaListUsed.pop()
except:
continue
return passwordPlaced
def Main():
password = input('Please input your password: ')
try:
num = int(input('Please input your password length ([6,30], default 20): '))
if num < 6 or num > 30:
num = 20
except:
num = 20
passwordHex = Hash(password)
digitList = [x for x in passwordHex if x.isdigit()]
digitListUsed = digitList[:int('{:.0f}'.format(num*0.25))]
alphaList = [x for x in passwordHex if x.isalpha()]
alphaListUsed = alphaList[:(num - len(digitListUsed))]
mapAlphaListUsed = [allAlphaList[allAlphaList.index(alphaListUsed[i]) + int(digitList[i])] for i in range(len(alphaListUsed))]
mapUpAlphaListUsed = [x.upper() for x in mapAlphaListUsed[::2]]
mapLowAlphaListUsed = mapAlphaListUsed[1::2]
print('{}\n'.format(Place(passwordHex, digitListUsed, mapUpAlphaListUsed, mapLowAlphaListUsed)))
Main()
Main()
【Python】基于哈希生成密码
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.