小小信用卡号码中的大乾坤
-By @KDS_lujinhua是中行小达人
说起信用卡卡号,很多人都会想起一串16位的数字,有点老资格的卡友,还知道4开头的卡是VISA卡,5开头的卡是万事达卡,JCB卡和运通卡通常都是3开头的,而最常见的中国银联的卡是62开头,。有一些卡友拿到卡后,总觉得自己的卡号不满意,认为银行随便印了一个号码,甚至希望像手机号一样可以自选。
虽然卡友们对卡号都有或多或少的关注,但绝大多数卡友却因对卡的了解有限,很难真正了解信用卡卡号中的“奥秘”。这里笔者用一张真实的信用卡为例,给大家揭开信用卡号码中的奥秘。(题外话一下,这卡已经挂失,大家不要期望记下卡号和有效期还能用哦。)
这里选用的卡是这两年很热门的中国银行长城环球通VISA芯片信用卡,通常的卡号是这样的排列的,见下图:
卡号一共16位,四位一组,一共四组。那么这组排列到底有什么含义呢?我们来看下表:
在这张表格中,我们很清楚的看到,亮黄色区域的卡号1-6位数字是发卡行识别码,也就是的我们熟悉的BIN码;土黄色区域的卡号7-15位数字是银行账户(美国运通卡除外,下同),它的含义是由发卡行自定义的,各个银行的定义标准不同,我们也就不一一细说;而草绿色区域第16位是校验码,英文说法是check digit,它是用来验证卡号有效性的,回头我会来说说这数字怎么算出来的。
我们先了解一下什么是发卡行识别码(BIN码)吧。很多卡友都知道这是卡组织分配给银行的6位数字,但具体怎么来的,很多人可能并不清楚。
卡号前六位数字被称为BIN,是英文Bank Identification Number的缩写;这组数字也被称为IIN,是英文Issuer Identification Number(发行者识别号码)的缩写,它是按照ISO/IEC7812文件而制定。这些数字可以帮助持卡人和商户识别出银行卡的发行机构。符合ISO/IEC7812标准的银行卡号通常为16位,最长可达19位,标准结构就是如表一所示。
按照ISO/IEC7812规范,卡号第一位严格来说是MII--Major Industry Identifier,也就是主要产业标识码,可以很方便的帮助我们识别出卡片所属行业。比如,3开头的号码分配给旅游、娱乐和银行/金融业,4和5开头的号码被完全分配给银行/金融业,6开头的号码分配给商业和银行/金融业。卡号的2-6位是叫IIN,即发行者识别号码。当然我们这里是讨论银行卡,不需要说的这么细,感兴趣的朋友可以自己去网上查找资料。为了简便起见,我们还是用BIN码来称呼银行卡前6位数字。
IIN数据库和成员目前由美国国家标准协会(American National Standards Institute,ANSI)管理并每月更新一次。美国国家标准协会负责向发行网络分配IIN范围。银联就是向该组织申请62开头的国际标准卡编号。有很多网站提供BIN码的查询,我们只要输入卡前6位就能知道自己的卡片发卡国家和银行,还有卡片种类,这里给大家推荐一个BIN码的查询网站http://www.exactbins.com/ ,有兴趣的朋友不妨查询自己的卡片种类,当然结果仅供参考。
接着我们来看卡号的第7-15位数字。
信用卡的第7-15位数字也就是银行账户,都是由银行自己定义的,每个银行的规则都不同,大家只要理解为这是自己的银行账户就可以了。这里再拿中国银行长城环球通卡额外说一下。长城卡的这组账户数字非常有意思,他把卡号7-8位定义为省级发卡行识别号,比如31代表上海,32代表江苏等等。剩下9-15位才是自己的账户号,最后一位仍然是校验码。我们用看下面表二来了解一下具有中行长城卡特色的卡号结构:
顺便再给大家提供长城环球通卡省级发卡行识别号:
北京11、天津12、河北13、山西14、内蒙古自治区15、辽宁21、吉林22、黑龙江23、上海31、江苏32、浙江33、安徽34、福建35、江西36、山东37、河南41、湖北42、湖南43、广东44、深圳48、广西45、海南46、重庆50、四川51、贵州52、云南53、西藏54、陕西61、甘肃52、青海53、宁夏64、新疆65
有兴趣的朋友不妨对照一下自己手中的长城卡。
现在就剩下卡片最后一位校验码还没说,不过在介绍这第十六位校验码之前,我们先学习一个专有名词-------Luhn算法。
Luhn算法(Luhn algorithm),也称为“模10算法”(Modulus 10或Mod 10)算法,是一种简单的校验和算法,一般用于验证身份识别码,例如发卡行识别码、国际移动设备辨识码(IMEI),美国国家提供商标识号码,或是加拿大社会保险号码。它是由IBM科学家Hans Peter Luhn创造,于1954年1月6日申请专利,1960年8月23日颁证,美国专利号2950048。
该算法已经得到了广泛的应用,例如和我们信用卡相关ISO/IEC 7812-1标准就采纳了这一算法。设计它的目的只是防止意外出错而不是恶意攻击。很多信用卡和众多的政府身份识别号码都使用该算法从一系列的随机数字中提取有效的数字,但是中国银联并没有使用这种算法,至于使用何种算法目前还不得而知。
我们用本文中的真实卡号来了解一下这个算法的特点,看看是如何算出最后一位校验码,即校验码9
计算步骤:
1. 第三列,从校验位开始,从右往左,偶数位乘2,然后将两位数字的个位与十位相加;
2. 第四列,把得到的数字与原数字串的奇数位相加在一起,得到71;
3. 取结果的个位数1
4. 用10减去个位数1,得到9,就是实卡中最后一位校验码
还有一种算法是,按照上述步骤1-2算出总和71,然后:
1. 将结果71乘以9,得到639,
2. 取结果的个位数9,即为校验码
现在我们知道信用卡的最后一位校验码是通过Luhn算法计算出来的,它的作用就是验证卡片的有效性,而不是银行电脑里面随便生成一个数字印上去的。一些网上流行的信用卡号码生成器也是利用该算法生成信用卡号码,这种卡号虽然有效但是仍然属于伪卡,不能用于真实的在线交易。
到这里我们差不多应该了解了信用卡号码的大多数秘密了,小小的一张信用卡其实包含的知识是博大精深的,有机会再给大家分享关于信用卡的其他知识。
本文在撰写过程中参考了大量的互联网文献资料,如果谬误之处,欢迎大家多多指正。