日期:2014-05-17  浏览次数:20804 次

求一个 做校验的算法
本帖最后由 bulls5988 于 2013-01-24 10:10:46 编辑
写一批磁卡,实际卡号为25位,其中前10位是卡号(自己提供),中间是8位是日期(例如:20130124)后七位想加入7位的随机验证码,因为从来没做过这一块。向大家请教下有什么好一点的算法可以实现的?相关文章、软件包也不胜感激!

------解决方案--------------------
挂一个数据库,后6位用随机函数生成,然后把你的前10位、中间8位和后6位融合在一起,算出最后的第7位。
大概是下面这个图示的意思:
AAAAAAAAAA(前10位) + AAAAAAAA(8位日期) + AAAAAA(6位随机数) + A(1位校验位)

随机数的生成随便找个函数就可以了。
校验位的生成就看你的需求了,如果没有特殊的要求,把前24位一起做与操作,取末尾的值做校验位就行,这样速度比较快。

如果要求唯一性,就把生成的卡号存数据库里,每次生成新卡号后比对一下。