2016-10-20 3 views
-2

Wir möchten Coupon-Code-Serien generieren und dann diesen Coupon-Code nur in Zahlen verschlüsseln, die auch entschlüsseln können müssen.Möchten Sie numerische Gutscheincodes generieren?

Wir teilen verschlüsselten Code als Gutschein-Code mit Kunden.

Dies sind die Bedingungen:

  1. verschlüsselte Code in Serie nicht oder nicht leicht in der Lage zu erraten sein. Es muss sein. NUMERIC
  2. Verschlüsselter Code muss eine bestimmte Anzahl von Ziffern haben.

Beispiel:

Wir erzeugen Gutscheincode von 1 bis 100 (Bedürfnisse in Millionen und plainCode wird entweder numerisch oder alphanumerische spielt keine Rolle).

Wir wollen verschlüsselten numerischen Gutscheincode mit bestimmten Ziffern für Benutzer freigeben. , d. H. Wenn der Code 52 ist, dann gibt der verschlüsselte Code zwischen 10000 und 99999 (wenn 5 Ziffern angegeben sind oder eine feste Anzahl von Ziffern sein muss)

Wir sind auch in der Lage, dieselben zu entschlüsseln.

WIE WIR DAS TUN KÖNNEN. JEDE IDEE ODER VORSCHLÄGE?

Vielen Dank.

HINWEIS:

  1. Dies ist nur ein Beispiel. Möglichkeiten sind in Millionen.
  2. Sicherheit ist kein großes Problem. einfach nicht in der Lage zu erraten, ist sehr wichtig.
  3. verschlüsselter Code muss numerisch sein.
+0

Sie UUID und kodieren-decode erzeugen kann –

+0

* „wenn Code 52 dann verschlüsselten Code uns zwischen 10.000-99.999 gibt“ * - Das ist schon sicher als nur ** Sie ** wissen die Werte beziehen sich auf 52. Es gibt nur 100 Möglichkeiten, warum nicht eine Nachschlagetabelle verwenden. –

+1

Wenn Sie nur 100 Coupons haben, wählen Sie einfach eine andere zufällige "verschlüsselte" Nummer für jeden von ihnen. Wenn nur die Tabelle von den "verschlüsselten" zu den "entschlüsselten" Nummern zurückverfolgt werden kann, ist sie im Grunde unzerstörbar (abgesehen von der Gummischlauch-Kryptographie oder der einfachen Nachlässigkeit). –

Antwort

0

, wenn die Sicherheit nicht Ihr Anliegen ist ...

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); 
} 
Verwandte Themen