我需要使用PHP生成以下格式的序列号"ASDK3-JDAL9-24SFT-J5D8R-D4AL9“。一个要求是,我需要在这个序列号中以某种方式编码一个时间戳和一个电子邮件地址,然后在需要时检索它们。有什么简单的方法吗?
编辑使之更具体,序列号中允许的数字和字母需要0-9和and。为了使它更通用,我需要有两个短字符串,例如,在那个序列号中编码。例如,日期为"04/03/2013“和一个号码"324”或电子邮件地址(如果可能的话)。字符串不需要在序列号中具有可读性,但我需要能够在需要时检索它们。
发布于 2013-05-23 22:08:17
让我们使用base32编码做一些简单的计算。你有36个字符,但我们假设32个字符,因为我们正在做粗略的估计。
基数32增加60%的开销。如果您想要存储8个字符的日期和3个字符的数量,则至少需要该数据的( 8 + 3 ) * 1.6 = 18字符。您的密钥是25个字符长,所以您将保留一些随机性的7 / 1.6 = 4字符。如果您的随机密钥有64个字符,您将有64^4 = 16 million的可能性。
PHP没有可用的原生基32函数,但您可以自己编写一个函数,大纲与base64相同,只是每次只使用7位而不是8位。
https://stackoverflow.com/questions/16724438
复制相似问题