【问题标题】:Python how to encode sequential list to look randomPython如何编码顺序列表以看起来随机
【发布时间】:2022-10-23 16:07:06
【问题描述】:

我想创建一个字符串序列号列表,以便知道一些,临时用户无法猜到其他人。

例如,如果我运行以下命令,serial1 应该与 serial2 完全不同,因此无法猜测 serial3

def scramble(txt):
    # encoding happens here
    return str(out)

serial1 = scramble('123456')
serial2 = scramble('123457')

任何字母数字输出都可以,只要它与输入有直接关系。 Hashlib 可以工作,但所有输出类型都太长了,截断会引入可能的冲突 也许某种简单的对称加密?

有任何想法吗?

【问题讨论】:

  • Perhaps some kind of simple symmetrical encryption? - 当你尝试时出了什么问题?

标签: python encoding cryptography


【解决方案1】:

您可以查看random 模块。这还将您创建一个可重现的伪随机数列表。默认情况下,种子值来自时间,但您可以将其设置为已知值以获得可重现的结果。例如:

import random

random.seed(1)

print([random.randint(1000, 10000) for i in range(5)])
print([random.randint(1000, 10000) for i in range(5)])

random.seed(1)

print([random.randint(1000, 10000) for i in range(5)])
print([random.randint(1000, 10000) for i in range(5)])

将返回

[3201, 2033, 5179, 2931, 9117]
[8364, 8737, 7219, 4439, 2537]
[3201, 2033, 5179, 2931, 9117]
[8364, 8737, 7219, 4439, 2537]

如果您关心碰撞,您可以保留一组您已经发布的项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    相关资源
    最近更新 更多