使用Python生成和验证凭证代码

时间:2014-11-10 08:34:28

标签: python python-2.7

我正致力于生成优惠券代码。 目前的情况是:

  • 凭证的范围为0-999,每周生成一次,每张优惠券都有唯一的代码。
  • 以后可以验证是否有效。
  • 每周都有一个密钥,我使用随机生成的密钥加密凭证号码进行编码。
  • 我发现代码是可猜测的,例如:

    '002'=> '\ XEC \ XBE \ X98'

    '003'=> '\ XEC \ XBE \ X99'

  • 然后我尝试使用MD5来散列代码,但它太长(32位),并且因为我将代码包装在我生成的凭证的qrcode中,所以可能非常耗时。

    < / LI>

目前我正在使用带有CFB模式AES加密的pycrypto模块,

谁能告诉我哪种方法可以生成可验证的凭证代码?

1 个答案:

答案 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,)

它具有一些优秀的凭证代码生成功能,如诅咒词过滤和可配置字母表。

它不是一种强化的加密解决方案,但对于价值有限的凭证代码,我确信它可以提供足够的保护,免受暴力攻击,特别是如果你每周更改密码。