American Express 美国运通卡卡号规则浅析 您所在的位置:网站首页 为什么信用卡显示卡号不正确的原因 American Express 美国运通卡卡号规则浅析

American Express 美国运通卡卡号规则浅析

2024-07-01 13:23| 来源: 网络整理| 查看: 265

hypnos      2017-06-16     2018-10-20 52 Comments

AmEx 相关总结

Photo credit: www.financetwitter.com/2014/08/cracking-sixteen-digits-credit-card-numbers-what-do-they-mean.html

American Express (Amex) 美国运通卡大家都相当熟悉,经常上我们博客的人一般手里都有1张甚至几张Amex信用卡。由于他家经常搞各种优惠offer (点击这里:Amex Offer),而且在过去的多年内,副卡也可以参加offer,相信不少童鞋都为自己的Amex卡加了一张几张甚至几十张副卡。卡太多容易混乱,容易主副不分,这里我们就说说Amex卡号的编号规则,这个规则的一个比较显见的用途是区分主副卡。

另外,这个冷知识还可以帮大家解决这样一个疑惑:为什么我的 AmEx 卡都是以100X结尾的?

本文只针对Amex银行自己发行的Amex卡,对于别的银行和Amex协议发行的Amex卡,比如CitiBank的Macys Amex卡,AA Amex卡,Dividend Amex卡,不在本文范围之内。而且这些卡一般主副卡卡号都一样,所以其实也不需要区分主副卡。

Contents

Amex卡号规则总结附录:计算Amex卡最后一位的R程序Amex卡号规则

Amex卡号总共15位,比Visa,MasterCard,Discover Card少一位。Amex卡号一定是37开头,后面的13位分6组,有不同的用途和意义。这里,我们用ABCDEF代表这6组。一个Amex卡号就可以写成这样:

37AA-BBCCCC-CDEEF

A: 2位,代表国家或者货币,在欧洲这一规律比较整齐,比如43代表英国,49代表法国,50代表德国,当然也有例外,比如同一国家不同货币卡这两位也可能不同;但是在美国,这两位有很多不同数字,也许因为在美国Amex发卡量比较大,所以需要更多的数组吧。B: 2位,代表卡的类型。比如白金卡一般就是90-99,之类的。当然现在Amex也不太遵守这个规律了。C: 5位,是这张卡对应的真正信用卡账号。D: 1位,卡编号,新发行的卡这位都是1,如果卡挂失或者别的一些原因需要换号,就加1(下一个是2),以此类推。E: 2位,00代表主卡,01-99是副卡。这两位可以看出两件事:如果卡的最后3位是00X,就是主卡,如果最后3位的前两个数字不是00,就是副卡;大家经常听Amex客服或者别的什么人说最多加99张副卡,原因就在这里了,Amex预留的副卡序列号只有99个,只能装下99张副卡。99就是最大副卡数目的理论值。当然,谁敢加这么多副卡,Amex FR (financial review)估计跑不了。F: 1位,使用 LUHN-10 算法验证这个信用卡号是否有效。

这位数字实际上是体现一点点计算算法的。LUHN-10算法实际上在维基百科上有说明:这里。

这个LUHN-10 算法的具体步骤是这样的:

把信用卡号除了最后一位的列出来,比如 (X是最后一位数字)3798 788715 7100X奇数位数字不变,偶数位数字乘以2。如果乘以2以后的数字大于等于10,两位相加。所有奇数位(原样不变)和偶数位(上面步骤2)和3)处理过的)相加。看这个总和的最后一位(个位),如果是0,那么卡号的最后一位就是0,如果不是0,卡号的最后一位就是10减去这个个位数。

这个表格列出了这个算法给出的上面这个信用卡号的最后一位数,应该而且只能是8。

1)原卡号37987887157100X2)乘以21416161410203)两位相加57751204)总和35977785117200625)最后一位X=8

为了方便大家,笔者用统计语言R(这个是开源免费软件,而且安装快捷方便)写了一段小代码。大家可以把自己的Amex卡号输入,最后一位是可以用这段小代码算出来的。笔者试了不少,都对。当然,笔者写程序水平一般,这个程序可能不够优化,不过作为娱乐应该够了。

这也看出,只要前面14位固定,Amex卡号的最后一位是唯一确定的,这也解释了为什么E的2位主副卡序列固定,对应的卡号只有一个(所以,只能有99张副卡)。

总结

最后,提醒大家一下:上面的规则看出,Amex卡号最后4位完全是废的,如果前面的11位被人知道了(其实前2位37也是废的),最后4位就基本是唯一确定的;如果前面4位和中间6位被人知道,最后5位其实只有10种可能(倒数第五位从0-9,最后4位基本就是唯一确定的)。卡被盗的几率巨大!

附录:计算Amex卡最后一位的R程序

统计软件R下载安装地址:https://cran.r-project.org/

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 LastDigit = function(x=37987887157100){ y_vec = rep(0,14) for(i in 1:14) y_vec[i] = floor(x/10^(14-i)) - floor(x/10^(15-i))*10 Total = 0 for(i in 1:7){ Total = Total + y_vec[2*i-1] Total_Even = 2 * y_vec[2*i] if(Total_Even ; 9) Total = Total + Total_Even - 9 else Total = Total + Total_Even } Total_LastDigit = Total - floor(Total/10)*10 if(Total_LastDigit ; 10)  LastDigit = 10 - Total_LastDigit if(Total_LastDigit == 10)  LastDigit = 0 return(LastDigit) } LastDigit(37987887157100)

LastDigit = function(x=37987887157100){ y_vec = rep(0,14) for(i in 1:14) y_vec[i] = floor(x/10^(14-i)) - floor(x/10^(15-i))*10 Total = 0 for(i in 1:7){ Total = Total + y_vec[2*i-1] Total_Even = 2 * y_vec[2*i] if(Total_Even ; 9) Total = Total + Total_Even - 9 else Total = Total + Total_Even } Total_LastDigit = Total - floor(Total/10)*10 if(Total_LastDigit ; 10)  LastDigit = 10 - Total_LastDigit if(Total_LastDigit == 10)  LastDigit = 0 return(LastDigit) } LastDigit(37987887157100)

注:在运行过前面的宏函数之后,只需要修改和运行最后一行LastDigit()就可以算出最后一位。

若喜欢本文,别忘了给个五星好评哦![Total: 24   Average: 4.3/5]

← Previous post

Next post →



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有