我正致力于生成优惠券代码。 目前的情况是:
我发现代码是可猜测的,例如:
'002'=> '\ XEC \ XBE \ X98'
'003'=> '\ XEC \ XBE \ X99'
然后我尝试使用MD5来散列代码,但它太长(32位),并且因为我将代码包装在我生成的凭证的qrcode中,所以可能非常耗时。
< / LI>目前我正在使用带有CFB模式AES加密的pycrypto模块,
谁能告诉我哪种方法可以生成可验证的凭证代码?
答案 0 :(得分:2)
Hashids模块可能就是你所追求的:
from hashids import Hashids
hash_id = Hashids(salt='your_secret_here', min_length=8)
hash_id.encrypt(0) # aDnwJKQZ
hash_id.encrypt(999) # p32jAqVW
# it is reversible
hash_id.decrypt('p32jAqVW') # (999,)
它具有一些优秀的凭证代码生成功能,如诅咒词过滤和可配置字母表。
它不是一种强化的加密解决方案,但对于价值有限的凭证代码,我确信它可以提供足够的保护,免受暴力攻击,特别是如果你每周更改密码。