根据MAC地址生成唯一代码

时间:2013-04-07 14:01:38

标签: android algorithm

我希望能够生成对单个Android设备有效的字母数字代码(如折扣代码中),每个代码都有限。

也就是说,我需要找到一种方法来生成唯一的无限(或大量,至少)代码,这些代码仅对单个设备有效。

我考虑过使用MAC地址作为代码生成的“种子”,但我不知道如何自己生成代码。这个问题有什么共同的方法或解决方案吗?

PS。我需要一种不依赖于代码数据库的算法,因为我的设备在激活代码时可能没有连接。

1 个答案:

答案 0 :(得分:1)

基本上你正在寻找的是某种形式的哈希函数。您可以通过生成任意随机数作为基础来实现此目的。一旦你有了这个,计算它的哈希值(作为一个字符串),以及它与设备的mac地址连接的哈希值。折扣代码可以是:

temp = hash(random())
code = concat(temp, hash(concat(mac_address, temp)))

然后可以通过确认代码的前半部分可以连接到mac地址并进行散列以生成后半部分来检查。

valid = hash(concat(mac_address, first_half(code))) == second_half(code)

或者,您可以跟踪已经请求的数量而不是随机数,而是使用它来代替random()调用。这应该*始终为您提供唯一的代码进行处理,您可以跟踪您的服务器上已兑换的代码。

  • 哈希函数的结果可能会发生冲突,但如果您仔细选择,这种情况的可能性非常小。

显然,以上所有都是非常通用的伪代码。我希望这会有所帮助。

有关哈希函数的一些信息(特别是加密函数,这是你想要的安全事件):

http://en.wikipedia.org/wiki/Cryptographic_hash_function