gpt4 book ai didi

c++ - 从两个 96 位数字生成唯一的 32 位数字

转载 作者:太空狗 更新时间:2023-10-29 22:54:03 24 4
gpt4 key购买 nike

为了识别设备,我需要一个唯一编号(32 位)。我正在使用 STM32 微 Controller 和 NFC 读取器芯片,它们都提供唯一的 96 位数字

两个 96 位数字都不能缩小偏移量,因为供应商不共享 96 位数字的组成 - 可能是为了识别假冒产品。

对于当前的 MCU,我提取了以下数据:

MCU 1

0-31bit = 0x410024

32-63bit = 0x3848500c

64-96bit = 0

MCU 2

0-31bit = 0x5f0027

32-63bit = 0x3848500c

64-96bit = 0

datasheet中的内容描述如下:

0..31 Silicon Wafer XY positiones (so there will be duplicateds here for every single waver)

32 Wafer Number of Lot

33..96 Lot Number

显然上面的两个例子是同一批处理,同一个晶圆,只是位置不同,这是有道理的,因为它们取自同一个卷轴

对于 NFC 阅读器,我提取了以下内容

NFC Reader

0-31bit = 0x34471725

32-63bit = 0x53484835

64-96bit = 0x38301531

读者对数字的组成方式知之甚少。

我的问题是,是否有可能从这两个 96 位数字生成一个新的唯一 32 位数字。编号可以是任意的,不能与原来的编号有任何关系,但要尽可能唯一。

任何建议都会有帮助

最佳答案

如果有一个随机的碰撞机会,它的概率会随着每个单元大致呈指数增长。这被称为 Birthday Problem .

对于 100,000 个项目, enter image description here给出 0.6878(由 Wolfram Alpha 提供)即超过 68%。对于 10,000 个项目,它是 barely over 1% .玩转这些数字,看看您是否可以承担风险。


为了保证结果,我会添加一个便宜的序列号 EEPROM,例如 24AA02UID到设备。

关于c++ - 从两个 96 位数字生成唯一的 32 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57713522/

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