![]() |
1
1
考虑一个基于Feistel网络的非常简单的方案来排列,例如,票据ID号。 This message (这恰好在PostgreSQL列表中,但与PostgreSQL没有太多关系)描述了一个简单的 Feistel network . 在每张票上,您可以打印一个票ID号(按顺序选择),然后打印一个“票密码”,这是通过Feistel网络输入ID号的结果。可能的变化包括在密码上附加一个校验位,并将输入建立在Feistel网络的基础上,而不仅仅是顺序生成的数字(数字+10000*事件ID号,等等)。 |
![]() |
2
12
为什么要重新发明轮子?只需这样做(python代码,如果需要澄清,请询问我):
例子: 事件编号1 票号123
Ticketman先生带着他的验证器过来,输入事件/票号和散列:
|
![]() |
3
5
我建议你给 Verhoeff algorithm 尝试一下。 |
![]() |
4
3
我可以看到两种方式:
|
![]() |
5
0
对于离线验证,我只看到一个简单的解决方案。 在票据ID后面附加一个票据ID的散列值和一个每个事件的salt。您可以将任何加密哈希截断到所需的大小。我想不出一个特殊的原因来使用任何东西,除了一个随机数作为基票ID本身。 这允许您限制票据ID的大小,并具有与票据ID大小明显成比例的安全性。 |
![]() |
6
0
你可以做一个CRC计算。 基本上,只需开始在字符串中添加每个字符,并将长度限制为一个长整数。 您可以从一个已知的随机数开始,并将其存储在前4个字节中,最后4个字节是我前面描述的一个计算。 这将是两个整数,或者八个字节。 |
![]() |
7
0
这里有一个方案,它的优点是允许您从上一个计算下一个票散列(这样您就可以验证是否缺少一个票散列),但不允许外部人员计算下一个票散列:
哪里
|
![]() |
Alex · 配置文件校验和猜测(CRC) 7 年前 |
![]() |
Will Haley · 为什么文件校验和会不一致地失败? 7 年前 |
![]() |
Waxhead · Fletchers16校验和是否适用于小数据? 7 年前 |
![]() |
assemblaj · 为什么我的代码不返回预期的和预先计算的校验和? 7 年前 |
![]() |
Chris Barry · 如何构建字节数组帧并计算校验和 8 年前 |
![]() |
Raf · 在python中计算哈希并将其添加到文件中 9 年前 |
![]() |
user3535074 · 校验和比较能表明两个文件有多不同吗? 9 年前 |
![]() |
anemo · 复制后sqlite Db的Android MD5校验和更改 10 年前 |
![]() |
crysoberil · 是否应始终依赖错误检测机制? 10 年前 |