因此,我需要生成一个代码,该代码可以绑定到特定用户/潜在客户,其中包含一定金额.它需要是可逆的,以便客户端应用程序可以确认代码的有效性并应用经理打算的折扣.
我想让代码尽可能短,但需要很好地混淆,以便销售人员不能自己开始搞乱它.
我可以拿出一些东西自己弹跳数字,除以pi并转换为十六进制等等但我真的对社区的想法或最佳实践感兴趣.
我在C#中这样做,但我希望可以翻译任何语言的方法.
编辑:澄清.我不能提前存储这些东西,代码必须在运行中构建并随身携带所有信息.
例如.推销员14打电话给客户773,并希望给他们500美元的订单.14,773和500必须在优惠券代码中,并且能够在销售人员在代码中键入后在客户端应用程序中提取.
生成用于签名的公钥/私钥对.使用私钥对用户ID和优惠券价值的组合进行数字签名.将优惠券价值+签名发布为优惠券代码,例如使用字母和数字进行编码.客户端应用程序将通过重新创建最初签名的数据组合(例如,将用户ID添加到优惠券值)然后验证数字签名来验证代码.
听起来像是不对称加密的情况.你可以向所有人公开公钥,从而为他们提供验证优惠券的信息,但是创建一个杯子的能力将取决于私钥的所有者(=你).
我将创建一个序列化为xml的优惠券类,然后加密xml字符串.验证是解密字符串并查看它是否是有效的xml(我建议不要在不检查之前反序列化该对象).