La génération unique, difficile à deviner “coupon codes

Mon application Rails besoins pour générer des coupons électroniques pour les utilisateurs. Chaque coupon doit avoir un code coupon unique qui peut être échangé sur notre système.

Par exemple un coupon pour un gratuit burrito. User A reçoit un coupon pour un gratuit burrito et puis User B reçoit un coupon pour un gratuit burrito. Les 2 coupons devraient avoir des unique codes promo.

Quelle est la meilleure façon de générer un code comme celui-ci qui n'est pas facilement falsifiés? Je ne veux pas les utilisateurs à avoir un taux de réussite élevé de taper des nombres aléatoires et racheter d'autres peuples coupons.

Je suppose que d'y penser comme une carte-cadeau avec un numéro unique sur le dos est ce que je suis à la recherche d'.

C'est le code pour l'utilisation de la machine (par exemple, les Url) ou censé être tapé à la main à partir d'une impression, ou quelque chose entre les deux (quelque chose que vous vous attendez à un utilisateur correctement cut & coller, et ne pas trouver il est difficile de le faire)?
tapé à la main à partir d'une impression.
Eric Lippert montre comment faire cela à l'aide d'un inverse multiplicatif. Voir Une utilisation pratique de multiplicative inverses. Une fois que vous avez généré à l'inverse, vous pouvez l'encoder à l'aide de la Base de 64 ou de la Base de 36, ou ce que vous voulez..

OriginalL'auteur Deekor | 2014-03-11