【问题标题】:How Unique is CRC16 Value?CRC16 值有多独特?
【发布时间】:2011-08-12 02:15:43
【问题描述】:

我正在开发一个开源 .NET 许可引擎。 该引擎使用hardware id(硬盘序列号)作为锁,并使用CRC16这个值来获取缩短标识符。

示例值为 MAXTOR ST3100, 476300BE,CRC16 结果为 3FF0

我关心的是 2 个不同的值多久得到相同的 CRC16 值,或者我应该使用 CRC32 代替吗?

【问题讨论】:

  • 为什么要散列呢?为什么不直接使用字符串呢?

标签: crc16


【解决方案1】:

【讨论】:

  • 我想我应该在连接它之前将 CPU 模型和 CRC16 所有单独的值添加到这个方案中(例如 3FF0-D0D0),以提高这个概率。
  • @F8R:为此,您需要 77163 台机器才能有 50% 的碰撞几率。
  • 谢谢,我认为这个数字对我的许可引擎来说非常安全。我不希望任何销售超过 20K 许可证的软件会使用这个开源项目,恕我直言,:D。
【解决方案2】:

由于 CRC16 是一个 16 位的值,我会说机会大约是 65536 中的 1。

【讨论】:

  • 很高兴知道这个数字,我认为这种硬盘序列号非常罕见,:D.
【解决方案3】:

没有散列方法生成唯一值,在某些时候会保证发生冲突。根据您的要求,最接近的选择就是按原样使用硬盘序列号。

但黑客很容易破解它。

【讨论】:

  • 这个值来自硬盘序列号(HDSN),如果黑客可以操纵HDSN,使用裸HDSN也没用,:D。但我使用 RSA 2048 进行许可证签名验证,HDSN 仅用于将许可证锁定到机器中。
猜你喜欢
  • 2011-05-21
  • 2014-01-24
  • 1970-01-01
  • 1970-01-01
  • 2021-08-15
  • 2011-04-27
  • 1970-01-01
  • 2012-09-06
相关资源
最近更新 更多