加密小消息

Encrypting small messages

我需要实现优惠券代码功能。由于所需的代码数量和其他一些限制,我无法将它们存储在数据库中。此外,显示的代码需要很短(大约 10 个字符)。

我最初的想法是使用加密函数通过​​加密正在进行的计数器来创建代码。但是我不知道该用什么方法。

由于计数器的原因,我只会对几个字节进行编码,而且我知道许多算法在用于非常短的消息时并不安全。

我的方法好吗? 我可以使用什么算法?

我不确定这是不是你想要的,根据我的评论,你没有真正的安全保证,但一个可能的答案是用一些数字播种 prng 并给出第一个 x 数字作为代码。只要 x 远小于可能的结果总数,重复的机会就很小,并且可以通过重新生成序列来验证代码(出于速度目的,您可能希望对其中的部分进行散列)

如果您使用 base 62: [a-z A-Z 0-9] 和 10 个数字,则有超过 839 千万亿种可能的结果。如果你要给地球上的每个人一个独特的代码,你将使用大约 0.0000009% 的可寻址 space