一个随机数、加密和校验位问题
做一个系统,类似移动的充值系统,发行充值卡为系统充值;
问题:
1、有没有对移动充值卡(或类似系统)密码生成算法有了解的,基本思路即可?(这个很可能没有答案)
2、生成大量15位的由数字组成的密码,有何好的算法?
要求唯一性、确保不能根据大量实例推导出生成算法
时间+硬件信息+随机数?
3、对15位数字组成的密码进行加密保存,要求加密后位数不变,且仍然全是数字,有何好的算法?
3DES有了解的不?
4、身份证校验位算法中最后除11取余,这个11有啥讲究?
类似移动充值卡的算法就是:那一串数(比如16位),我要验证它是不是,先只取奇数,然后把所有奇数相加为一和,然后取偶数,把偶数相加得一和,两和的绝对值的差在跟一个制定数取模 如模为预先默认的那一数,则此卡的16数为官方认可的可充值16位。我记不大清了 ,大概就是这样,希望能有帮助。
1.我的做法是,取第一千万个点击我服务器页面的ip+时间,可以生成一个字符串,对这个字符串做散列(如MD5/MD4一类的都可以).得到一个相对随机的数字.第二次取第10000001(当然可能有另一个取第二个次序的方法,不一定照顺序取下去,看你保密性.我由另一个服务器的访问志来做,导致第二次取的是11234234). 这时,这些东西的随机性相对来说就很好了,基本很难受到外界人为左右,它甚至受海底光缆的影响
(基本上一般程序语言自带的随机数都是过家家时玩的,许多人推得出来)
把这些东西放到你的INSERT到你的数据库上,用过的就做标记.
2.如上.
3.内事不决问BAIDU,外事不决问GOOGLE
4.校验码一般是为了人人输入时不输错,和你的CRC32一样.业务系统中,各种标准的报文也都有,大量应用的.校验得到就得了当然,一般都是数字,很少见X这么奇怪的.
重要的是你数据库中有没有那个数据,是否加密我到没什么太大的概念。只要能生成随机数,ok,将它设置的长一点,将别人蒙的几率降到最低,就行了。
这几天用asp搞了个小充值系统玩的,反正也是简单,我就直接用guid生成的,从中截取了25位,就完事了。当然是因为没有纯数字的要求,所以实现比较简单。充值卡密码我就取得8位随机数,配合guid,用起来感觉还不错:)
可能更深入的我还没了解到,反正我觉得重要的是跟你数据库匹配就行。其余的就是系统自身的问题了,比如设置不能进行反复穷举的这类操作。
1、有没有对移动充值卡(或类似系统)密码生成算法有了解的,基本思路即可?(这个很可能没有答案)
很简单,就是一个大的随机数,外加2-3个校验位。卡号和密码的关系在校验位里。
2、生成大量15位的由数字组成的密码,有何好的算法?
直接用程序语言的随机因子,再和数化的时间运算,基本可以保证无重复
3、对15位数字组成的密码进行加密保存,要求加密后位数不变,且仍然全是数字,有何好的算法?
DES或AES
3DES有了解的不?网上资料好多的
4、身份证校验位算法中最后除11取余,这个11有啥讲究?
用11取模,解的区间在[0,9]