1

在 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' 也使用相同的标准字典进行编码,这也需要使用自定义字典。

-布雷特

4

0 回答 0