【发布时间】:2016-10-20 14:28:16
【问题描述】:
我们想生成优惠券代码系列,然后仅以数字加密这些优惠券代码,并且还必须能够解密。
我们将与客户分享加密代码作为优惠券代码。
这些是条件:
- 加密代码不得串联或不易猜到。它必须是 NUMERIC
- 加密的代码必须有特定的位数。
示例:
我们生成从 1 到 100 的优惠券代码(需要数百万,plainCode 是数字或字母数字都没有关系)。
我们希望与用户共享具有特定数字的加密数字优惠券代码。 即如果代码是 52,那么加密的代码给我们 10000 到 99999 之间(如果指定了 5 位或需要固定位数)
我们也可以解密。
我们如何做到这一点。有什么想法或建议吗?
谢谢。
注意:
- 以上只是一个例子。可能性以百万计。
- 安全不是主要问题。只是无法猜测很重要。
- 加密的代码必须是数字。
【问题讨论】:
-
你可以生成uuids和encode-decode
-
"如果代码为 52,则加密代码为我们提供 10000 到 99999 之间的值" - 这已经很安全了,因为只有 您 知道与 52 相关的值. 为什么不使用查找表只有 100 种可能性。
-
如果您只有 100 张优惠券,只需为每张优惠券选择一个不同的随机“加密”数字。如果只有您有表格从“加密”数字映射回“解密”数字,它基本上是牢不可破的(除非橡胶软管密码学或粗心大意)。
-
1 到 100 只是一个例子。可能性以百万计。是的,查找表是他们的,但试图获得更好的方法......
-
您应该查找Format-preserving encryption的主题以了解此类问题。
标签: java encryption numeric series coupon