Encryption 加密小消息

Encryption 加密小消息,encryption,e-commerce,rsa,Encryption,E Commerce,Rsa,我需要实现一个优惠券代码功能。由于需要的代码数量和其他一些限制,我无法将它们存储在数据库中。此外,显示的代码需要简短(大约10个字符) 我最初的想法是使用加密函数通过加密正在进行的计数器来创建代码。但我不知道该用什么方法 由于计数器的原因,我只能对几个字节进行编码,而且我知道,许多算法在用于非常短的消息时是不安全的 我的方法是个好主意吗? 我可以使用什么算法?我不确定这是否是您想要的,根据我的评论,您没有真正的安全保证,但一个可能的答案可能是在prng中植入一些数字,并将前x个数字作为代码给出。

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

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

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

我的方法是个好主意吗?
我可以使用什么算法?

我不确定这是否是您想要的,根据我的评论,您没有真正的安全保证,但一个可能的答案可能是在prng中植入一些数字,并将前x个数字作为代码给出。只要x远小于可能的结果总数,重复的机会就很小,并且代码可以通过重新生成序列来验证(为了提高速度,您可能需要散列部分序列)


如果将基数62:[a-z a-z 0-9]与10个数字一起使用,则可能产生的结果超过8.39万亿次。如果你给地球上的每个人一个唯一的代码,你会使用大约0.0000009%的可寻址空间,我不确定这是否是你想要的,根据我的评论,你没有真正的安全保证,但一个可能的答案是在prng中植入一些数字,并将前x数字作为代码给出。只要x远小于可能的结果总数,重复的机会就很小,并且代码可以通过重新生成序列来验证(为了提高速度,您可能需要散列部分序列)


如果将基数62:[a-z a-z 0-9]与10个数字一起使用,则可能产生的结果超过8.39万亿次。如果你给地球上的每个人一个唯一的代码,你将使用大约0.0000009%的可寻址空间

如果你非常关心安全和防止欺诈,你真的应该发送唯一的代码,你可以验证他们试图使用某个特定用户帐户时所拥有的代码。10个字符代码中的总熵有一个有限的限制如果你非常关心安全和防止欺诈,你真的应该发送唯一的代码,当用户试图使用它时,你可以验证这些代码是否属于特定的用户帐户。一个10个字符的代码中的总熵有一个有限的限制,即重新生成一百万个数字来验证某个优惠券代码的有效性,这听起来非常昂贵。至于你的评论:我在最初的问题中写道,我不能将优惠券代码存储在数据库中,我的意思是。@Laures支票会在POS终端上进行吗?还是所有的请求都将进入一台服务器?我让Python生成1000万个随机数(0到62**5),对它们进行排序,并在大约一秒钟内检查一个随机数的成员身份。@Aaron和Python并不是一种快速的语言。生成这些数字所需的时间几乎可以忽略不计+我使用
SecureRandom
在java中测试了这种方法,它很有效。创建、编码和验证前100k代码花费了大约2分钟(每个代码都使用新种子PRG进行了验证)。我没想到会这么快。重新生成一百万个数字来验证某个优惠券代码是有效的,这听起来太贵了。至于你的评论:我在最初的问题中写道,我不能将优惠券代码存储在数据库中,我的意思是。@Laures支票会在POS终端上进行吗?还是所有的请求都将进入一台服务器?我让Python生成1000万个随机数(0到62**5),对它们进行排序,并在大约一秒钟内检查一个随机数的成员身份。@Aaron和Python并不是一种快速的语言。生成这些数字所需的时间几乎可以忽略不计+我使用
SecureRandom
在java中测试了这种方法,它很有效。创建、编码和验证前100k代码花费了大约2分钟(每个代码都使用新种子PRG进行了验证)。我没想到会这么快。