我们希望生成优惠券代码系列,然后仅以数字加密这些优惠券代码,并且还必须能够解密。
我们将与客户共享加密代码作为优惠券代码。
以下是条件:
示例:
我们生成1到100的优惠券代码(需要数百万,而plainCode将是数字或字母数字并不重要)。
我们希望将具有特定数字的共享加密数字优惠券代码发送给用户。 即如果代码是52,则加密代码给出10000到99999之间(如果指定了5位数或者需要修复位数)
我们也可以解密它。
我们如何做到这一点。任何想法或建议?
谢谢。
注意:
答案 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);
}