使用python生成促销代码

Hel*_*nar 4 python security promotions

通过使用python语言,什么是生成促销代码的聪明/有效方式.喜欢用于生成折扣券的特殊号码.像:1027828-1

谢谢

Gre*_*att 7

以下不是特别pythonic或特别有效,但它可能就足够了:

 import random
 def get_promo_code(num_chars):
     code_chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
     code = ''
     for i in range(0, num_chars):
         slice_start = random.randint(0, len(code_chars) - 1)
         code += code_chars[slice_start: slice_start + 1]
     return code
Run Code Online (Sandbox Code Playgroud)

  • 可能想从该列表中删除0,1,I,O和L,因为它们很容易被promo_code中的读者弄糊涂,其中没有上下文来帮助弄清楚字母应该是什么.很好的解决方案,因为这种东西很容易适应这个代码. (3认同)

roo*_*ook 5

1027828-1非常小.攻击者只需使用几行代码就可以进行大约百万次猜测,可能需要几天时间.

这是使用python生成难以预测的数字的好方法,它可以在linux和windows下运行.它是base64'用于二进制安全,取决于你正在做什么你可能想要urllib.urlencode()但我会避免base10因为它不存储尽可能多的信息.

import os
import base64

def secure_rand(len=8):
    token=os.urandom(len)
    return base64.b64encode(token)

print(secure_rand())
Run Code Online (Sandbox Code Playgroud)

作为旁注,这是生成一个完整的字节,即base256.256 ^ 8是18446744073709551616,它应该足够大.

  • 对于促销代码,base64*不适合*.它区分大小写,包含标点符号(可以破坏网址和论坛帖子),很长,很容易让客户拼错.这意味着商店减少收入.有关如何创建代码的示例,请参阅couponcabin.com. (5认同)
  • 对于 python3.6 ,可以使用 Secrets 模块。 (2认同)