在 passlib 中编码数据时是否可以指定自定义 Base_64 字典?
我需要在不允许在其配置文件中使用“+”字符的系统上生成“scrypt”编码密码。
更具体地说,使用的自定义字典是 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
反对标准字典='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
使用代码:
import sys
import re
from passlib.hash import scrypt
char = re.compile(r'[a-zA-Z0-9()!#$%^&*.,+=_-]')
def main():
try:
pwd = input('\n' + 'Enter a Plain Text Password to Encrypt: ')
except KeyboardInterrupt:
sys.exit(0)
else:
if len(pwd) > 64:
print ('Password must be between 1 and 64 characters. Try again.')
main()
else:
if (char.match(pwd)):
hash = str(scrypt.using(rounds=14, salt_size=10).hash(pwd))[21:]
print ('\n Your hash is: ' + hash)
else:
print ('Illegal characters. Try again.')
main()
main()
它偶尔会输出我的系统不支持的“+”字符。
你的哈希是:$o/ReK+U8JyRkbA$W6zFHBmebC4LwkTN+rB8kSgUbDK0Zo4p2z7CCwvJOXk
如果我没记错的话,字符也必须在字典中的正确顺序。
有没有办法用 passlib 指定自定义字典?还是有更好的方法来实现这一目标?
'salt' 也使用相同的标准字典进行编码,这也需要使用自定义字典。
-布雷特