2016-10-20 1 views
-2

Nous voulons générer des séries de codes promo, puis chiffrer ces codes promo uniquement en numérique et qui doivent également pouvoir être décryptés.Vous voulez générer des codes promo numériques?

Nous allons partager le code crypté comme code de coupon avec le client.

Ce sont les conditions suivantes:

  1. code crypté ne doit pas être en série ou pas facilement deviner. Il doit être NUMERIC
  2. Le code crypté doit avoir un nombre spécifique de chiffres.

Exemple:

Nous générons code promo de 1 à 100 (besoins en millions et plainCode sera soit numérique ou alphanumérique n'a pas d'importance).

Nous voulons partager le code coupon numérique crypté avec des chiffres spécifiques à l'utilisateur. si le code est 52 alors le code crypté nous donne entre 10000 à 99999 (si 5 chiffres sont spécifiés ou il doit être un nombre fixe de chiffres)

Nous sommes également en mesure de déchiffrer le même.

COMMENT NOUS POUVONS FAIRE CECI. TOUT IDÉE OU SUGGESTIONS?

Merci.

REMARQUE:

  1. Au-dessus est juste un exemple. les possibilités sont en millions.
  2. La sécurité n'est pas une préoccupation majeure. juste pas capable de deviner est important.
  3. Le code crypté doit être numérique.
+0

vous pouvez générer uuids et encode-decode –

+0

* "si le code est 52 alors le code crypté nous donne entre 10000-99999" * - qui est déjà sûr que seul ** vous ** connaissez les valeurs se rapportent à 52. Il y a seulement 100 possibilités pourquoi ne pas utiliser une table de recherche. –

+1

Si vous avez seulement 100 coupons, il suffit de choisir un nombre aléatoire différent "crypté" pour chacun d'eux. Si seulement vous avez la table à recopier des chiffres "cryptés" aux nombres "décryptés", c'est fondamentalement incassable (sauf la cryptographie en caoutchouc ou la négligence pure). –

Répondre

0

si la sécurité ne vous concerne pas ...

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