# -*- 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】基于哈希生成密码
最新推荐文章于 2024-01-27 02:22:21 发布