想要生成数字优惠券代码?

时间:2016-10-20 14:28:17

标签: java encryption numeric series coupon

我们希望生成优惠券代码系列,然后仅以数字加密这些优惠券代码,并且还必须能够解密。

我们将与客户共享加密代码作为优惠券代码。

以下是条件:

  1. 加密代码不得串联或不易猜测。必须是 NUMERIC
  2. 加密代码必须具有特定的位数。
  3. 示例:

      

    我们生成1到100的优惠券代码(需要数百万,而plainCode将是数字或字母数字并不重要)。

         

    我们希望将具有特定数字的共享加密数字优惠券代码发送给用户。   即如果代码是52,则加密代码给出10000到99999之间(如果指定了5位数或者需要修复位数)

         

    我们也可以解密它。

    我们如何做到这一点。任何想法或建议?

    谢谢。

    注意:

    1. 上面只是一个例子。可能性有数百万。
    2. 安全不是主要问题。只是无法猜测是很重要的事情。
    3. 加密代码必须为数字。

1 个答案:

答案 0 :(得分:0)

如果您不担心安全问题......

int key=123456;

List<int> availableNumbers=new List<int>();
for(int i=10000;i<100000;i++)
    availableNumbers.Add(i);

Dictionary<int,int> forwards=new Dictionary<int,int>();
Dictionary<int,int> backwards=new Dictionary<int,int>();

for(int i=1;i<1000;i++){
    var rnd=new System.Random(key+i);
    int pos=rnd.Next(availableNumbers.Count);
    int number=availableNumbers[pos];
    availableNumbers.RemoveAt(pos);
    forwards[i]=number;
    backwards[number]=i;
}

foreach(var kvp in forwards)
{
    Console.Out.WriteLine("{0,5}=>{1}",kvp.Key,kvp.Value);
}