我需要创建一个网站,允许客户查看他们的帐户在线状态信息。为了避免创建客户网站帐户的麻烦,我希望他们只需使用自己的账号和访问代码登录即可。我希望访问代码是从账号生成的,我会提供他们的邮寄报表的代码。
从8位数字帐号生成此访问代码的好公式/函数/方法是什么?结果可以是数字或字母,但我不希望它超过10个字符。我想保持数学相当简单,以便在打印语句时可以通过crystal reports公式生成代码。我不是在寻找防弹的安全措施,因为这不是敏感信息。我只是想防止有人随意输入账号。
发布于 2012-06-01 03:44:28
我要做的是将帐号一分为二(使用模算术),然后对这两部分执行一些数学运算,以得出授权码。
例如:
I'm assuming account number is atleast 10000, if they start at 00000001, then you will have to add a step to multiply it by 10,000 (which will result in larger auth codes for the bigger account numbers) or reduce the modulus size
Let A = account number
A mod 10,000 = X
(A - X) / 10,000 = Y
AuthCode = (X + 51) * (Y + 89)
因此,如果帐号是18654848:
18654848 % 10000 = 4848
(18654848 - 4848) / 10000 = 1865
(4848 + 51) * (1865 + 89) = 4899 * 1954
= 9572646
然后,当用户尝试登录时执行相同的数学运算,并查看授权码和该数字是否匹配。
这将使授权码的范围在103538 - 101384400之间
https://stackoverflow.com/questions/10838326
复制相似问题