Jer*_*acs 5 c# checksum unique
我想自动生成一个唯一的 8-10 个字符 ID 字符串,其中包含某种校验和位,以防止数据输入时出现拼写错误。我更喜欢没有序列号的东西,数据输入人员最终会陷入“陈规”并习惯于始终键入相同的序列。
是否有与此类事情相关的最佳实践/陷阱?
更新:好的,我想我需要提供更多细节。
第二次更新好吧,我不明白这有什么令人困惑的,但我会尝试进一步解释。我正在尝试创建将在表格中显示的跟踪号码,该表格将在稍后填写并输入数据。我将生成 id 并将其贴在表单上;id 需要是唯一的,它需要支持很多数字,并且对于数据输入来说它需要具有合理的防白痴功能。
我不知道这是否已经做到了,或者即使可以做到,但问一下也无妨。
你的问题非常笼统 - 因此只是一些一般方面:
ID 是否需要“不可猜测”?如果是,那么应该混合某种哈希值。
ID 是否需要“安全”(例如激活密钥或其他东西)?如果是,那么应该混合使用某种公钥加密技术。
ID/校验和计算是否需要很快?如果是,那么也许一些非常简单的算法,如 CRC32 或 Luhn(信用卡校验和算法)或 soem 条形码校验和算法可能值得一看。
ID 生成是否集中?如果没有,那么您可能需要检查 GUID、当前时间、MAC 地址和类似的内容。
更新 - 根据评论:
要检查输入的值,您只需从除最后一位之外的所有数字重新计算 CRC-6-ITU,并将结果与最后一位数字进行比较。
上面的内容相当“难以猜测”,但绝对不是“高度安全”的。
更新 2 - 根据评论:
有关如何在 javascript 中计算 CRC 的一些灵感,请参阅此- 它包含 CRC-8 等的 javascript 代码。
您应该能够根据 CRC-6-ITU 多项式调整此代码。