从序列号创建匿名唯一标识符的算法

4

我希望为移动应用程序记录一些简单的使用统计信息。基于用户隐私考虑,如果可能的话,我不想在数据库中存储他们的实际设备序列号。是否有一种简单的算法可以将序列号哈希或转换为匿名标识符,并且不能被反向重构,同时仍然保证唯一性?


2
如果无论如何都不能被反转,为什么不直接使用Guid呢? - BrokenGlass
1
我正在寻找基于设备序列号的解决方案,以便卸载/重新安装或新版本将生成相同的 ID,而不会错误地增加用户计数器。看起来我只能接受这个小偏差,并选择类似 GUID / UUID 的解决方案。 - emkman
2个回答

2

是的,您需要使用UUID。几乎所有的编程语言都有这个功能。 据我所知,它们无法被反转以获取原始“种子”。


根据我的愿望,使用设备序列号作为可预测结果的种子,以及我使用的是 javascript,我选择了这个网址:http://davidbau.com/encode/seedrandom.js 在这里解释了: http://davidbau.com/archives/2010/01/30/random_seeds_coded_hints_and_quintillions.html 我从阅读你提供的链接,然后跟随评论链接找到了它,所以谢谢! - emkman

0

创建设备序列号的哈希值。哈希是一种单向加密方式。使用SHA-256算法。

现在,根据输入的大小,哈希函数可能会产生一些冲突,在某些(非常罕见)情况下,这会导致您的唯一标识符不唯一。为了避免这种情况,您可以附加一些其他任意信息,例如IP地址或时间戳。

[SHA-256 of serial number][Time Stamp][Data to store]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接