1

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

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

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

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

4

1 回答 1

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

于 2013-04-07T14:11:16.593 回答