gpt4 book ai didi

encryption - 模糊/加密一个订单号作为另一个数字 : symmetrical, "random"外观?

转载 作者:行者123 更新时间:2023-12-03 08:11:02 25 4
gpt4 key购买 nike

客户有一个简单的递增顺序号(1、2、3...)。他希望最终用户收到一个 8 位或 9 位(仅限数字——无字符)“随机”数字。显然,这个“随机”数实际上必须是唯一且可逆的(它实际上是对实际订单号的加密)。

我的第一个想法是洗牌一些位。当我向客户展示样本序列时,他提示随后的 obfuscOrderNumbers 一直在增加,直到它们达到“洗牌”点(低位开始发挥作用的点)。他希望 obfuscOrderNumbers 看起来尽可能随机。

我的下一个想法是确定性地为线性同余伪随机数生成器设置种子,然后获取 actualOrderNumber th 值。但在那种情况下,我需要担心冲突——客户想要一种保证在至少 10^7 个周期内不会发生冲突的算法。

我的第三个想法是“嗯,只是加密该死的东西”,但是如果我使用股票加密库,我必须对其进行后处理才能获得仅 8 或 9 位数字的要求。

我的第四个想法是将 actualOrderNumber 的位解释为一个格雷编码的整数并返回它。

我的第五个想法是:“我可能想多了。我敢打赌 StackOverflow 上的某个人可以用几行代码做到这一点。”

最佳答案

随机选择一个 8 位或 9 位数字,比如 839712541。然后,取您订单号的二进制表示(在本例中,我没有使用 2 的补码),将其填充为相同的位数 (30),然后将其反转, 和 xor 翻转的订单号和魔数(Magic Number)。例如:

1         = 000000000000000000000000000001

Flip = 100000000000000000000000000000
839712541 = 110010000011001111111100011101
XOR = 010010000011001111111100011101 = 302841629

2 = 000000000000000000000000000010

Flip = 010000000000000000000000000000
839712541 = 110010000011001111111100011101
XOR = 100010000011001111111100011101 = 571277085

要取回订单号,请将输出编号与您的魔数(Magic Number)进行异或,转换为位字符串,然后反转。

关于encryption - 模糊/加密一个订单号作为另一个数字 : symmetrical, "random"外观?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/611915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com