19位银行卡卡号有效性合法性验证.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
19位银行卡卡号有效性合法性验证

根据《中国银联2.0》标准 - Q/CUP 002-2004 提供的算法 Luhn计算模10“隔位2倍加”校验数的公式计算步骤如下:步骤1:从右边第1个数字(低序)开始每隔一位乘以 2 。步骤2:把在步骤1中获得的乘积的各位数字与原号码中未乘2的各位数字相加。步骤3:从邻近的较高的一个以0结尾的数中减去步骤2中所得到的总和 [这相当于求这个总和的低位数字(个位数)的“ 10的补数 ”], 如果在步骤2得到的总和是以零结尾的数(如30、40等等),则校验数字就是零。[例]:无校验数的卡号655002 0001 步骤6 5 5 0 0 2 0 0 0 1 0 0 0 0 0 3 2 8 1 x2 x2 x2 x2 x2 x2 x2 x2 x2 10 0 4 0 2 0 0 6 166 + 1 + 0 + 5 + 0 + 0 + 4 + 0 + 0 + 0 + 2 + 0 + 0 + 0 + 0 + 0 + 6 + 2 + 1 + 6 = 33 2 40 – 33 = 7 3即校验为 7 带有校验数的卡号为:655002 00017(银联要求的卡号是13-19位,此程序暂时满足19位卡号的计算,19位以下的有待修改)功能:检查19位的银行卡号码的有效性运行环境:Red Hat Enterprise Linux AS release 3 、AIX Version 5 操作系统上测试通过编译命令:cc -o card card.c执行命令:./card源代码:/************************************************************FileName: card.cAuthor: yuanfen127Date: 2005年12月01日Description: 银行卡号码的有效性检查程序Version: 1.0Function List: 1. int CreatBit(char *cdno, int length) 根据前面length-1位长度生成最后校验位 2. int iCheckBit(char *sbuf) 调用CreateBit生成校验位和输入的比较History: author time version desc***********************************************************/#include stdio.h#include string.hmain(){ char card_no[20]; printf(请输入19位卡号:); scanf(%19s,card_no); printf(卡号:%s\n,card_no); /*CreatBit(card_no,strlen(card_no)-1);*/ if ( strlen(card_no) 19 ) { printf(卡号长度错误\n); return -1; } if ( 0 != iCheckBit(card_no) ) { printf(卡号错误!\n); } else { p

文档评论(0)

gk892289 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档