筆者目前使用的jdk版本是1.6.0_29撤师,Eclipse版本是Juno Release,Build id 20120614-1722盅弛。如無特殊說明,本文所有的Java代碼都是基于此夺艰。
修訂記錄
版本號(hào) | 修訂日期 | 修訂說明 |
---|---|---|
V0.1 | 2018/09/02 | 初稿 |
V1.0 | 2018/09/09 | 發(fā)布 |
參考資料
- 維基百科 https://en.wikipedia.org/wiki/Payment_card_number
- 維基百科 https://en.wikipedia.org/wiki/Luhn_algorithm
- ISO/IEC 7812-1-2017 Identification cards - Identification of issuers - Part 1: Numbering system
- 中華人民共和國金融行業(yè)標(biāo)準(zhǔn) JR/T 0008-2000 銀行卡發(fā)卡行標(biāo)識(shí)代碼及卡號(hào)
- GB/T 15694.1-1995 識(shí)別卡 發(fā)卡者標(biāo)識(shí) 第1部分:編號(hào)體系
- 銀聯(lián)標(biāo)準(zhǔn)卡的成長之路(來源:新浪財(cái)經(jīng),發(fā)布時(shí)間:2007年03月14日)
歷史背景
2000年沉衣,中國人民銀行為推動(dòng)聯(lián)網(wǎng)通用郁副,組織制定了一系列銀行卡業(yè)務(wù)規(guī)范和技術(shù)標(biāo)準(zhǔn)。其中《銀行卡發(fā)卡行標(biāo)識(shí)代碼及卡號(hào)》規(guī)定厢蒜,在國內(nèi)發(fā)行使用的各種人民幣卡必須使用“9”字頭BIN霞势。該規(guī)定為規(guī)范和統(tǒng)一銀行卡在國內(nèi)的發(fā)行烹植、使用及聯(lián)網(wǎng)通用奠定了基礎(chǔ)斑鸦。
?
隨著我國銀行卡產(chǎn)業(yè)的迅速發(fā)展以及國際交流的日益增加,持卡人的境外支付需求越來越多草雕。根據(jù)國際標(biāo)準(zhǔn)化組織(ISO)的規(guī)定巷屿,使用“9”字頭BIN的銀行卡只能在國內(nèi)使用。這意味著人民幣可自由兌換后墩虹,我國國內(nèi)各發(fā)卡機(jī)構(gòu)發(fā)行的大量“9”字頭BIN銀行卡屆時(shí)可能無法在國外使用薛窥『蓿“9”字頭BIN的銀行卡只能在國內(nèi)使用的局限性與廣大持卡人對(duì)境外用卡的支付需求之間的矛盾逐步顯現(xiàn)。
?
為了促進(jìn)民族銀行卡產(chǎn)業(yè)的健康持續(xù)發(fā)展,維護(hù)各發(fā)卡機(jī)構(gòu)的長遠(yuǎn)利益少梁,克服“9”字頭BIN的銀行卡境外使用的局限,在中國人民銀行的指導(dǎo)和幫助下麻顶,2002年巷折,中國銀聯(lián)代國內(nèi)各發(fā)卡機(jī)構(gòu)統(tǒng)一向ISO(國際標(biāo)準(zhǔn)化組織)申請(qǐng)了800個(gè)在國內(nèi)和國外通行的國際標(biāo)準(zhǔn)BIN(622126至622925)。在取得中國人民銀行關(guān)于啟用銀聯(lián)國際標(biāo)準(zhǔn)發(fā)卡行BIN號(hào)的批復(fù)后惧所,2003年7月骤坐,中國銀聯(lián)向各成員機(jī)構(gòu)發(fā)布了《關(guān)于啟用銀聯(lián)國際標(biāo)準(zhǔn)發(fā)卡行BIN號(hào)的函》,并且為了規(guī)范和合理地分配下愈、使用和管理銀聯(lián)國際標(biāo)準(zhǔn)BIN號(hào)和已經(jīng)廣為使用的原“9”字頭BIN號(hào)纽绍,中國銀聯(lián)發(fā)布了《銀聯(lián)標(biāo)識(shí)卡BIN號(hào)分配和管理暫行辦法》。從而正式啟動(dòng)了銀聯(lián)國際標(biāo)準(zhǔn)“62”字頭BIN號(hào)的分配和使用工作势似,推動(dòng)各家成員機(jī)構(gòu)開始發(fā)行銀聯(lián)標(biāo)準(zhǔn)卡拌夏,即具有“銀聯(lián)”標(biāo)識(shí),卡號(hào)前6位采用銀聯(lián)國際標(biāo)準(zhǔn)“62”字頭BIN號(hào)的銀行卡履因。該卡符合我國統(tǒng)一的業(yè)務(wù)規(guī)范和技術(shù)標(biāo)準(zhǔn)障簿,是我國具有自主知識(shí)產(chǎn)權(quán)的高品質(zhì)、國際化民族銀行卡品牌搓逾。
銀行卡號(hào)的編碼規(guī)則
銀行卡號(hào)由最多19位數(shù)字組成卷谈。
- 前6位數(shù)字被稱為發(fā)行者識(shí)別號(hào)碼(Issuer Identification Number,縮寫為IIN)霞篡,也稱為發(fā)卡行識(shí)別碼(Bank Identification Number世蔗,簡稱BIN)端逼,常說的卡BIN就是指它,由中國銀聯(lián)代國內(nèi)各發(fā)卡機(jī)構(gòu)統(tǒng)一向ISO申請(qǐng)污淋。6位IIN的第一位顶滩,是主要行業(yè)標(biāo)識(shí)符(Major industry identifier,縮寫為MII)寸爆,分配如下:
- 0 - ISO/TC 68和其他行業(yè)分配
- 1 - 航空業(yè)
- 2 - 航空業(yè)礁鲁,金融業(yè)和其他未來行業(yè)分配
- 3- 旅游業(yè)和娛樂業(yè)
- 4 - 銀行業(yè)和金融業(yè)
- 5 - 銀行業(yè)和金融業(yè)
- 6 - 商業(yè)和銀行業(yè)/金融業(yè)
- 7 - 石油業(yè)和其他未來行業(yè)分配
- 8 - 醫(yī)療業(yè),電信業(yè)和其他未來行業(yè)分配
- 9 - 由各國標(biāo)準(zhǔn)團(tuán)體分配
- 中間的7~18位由發(fā)卡行自定義赁豆,表示不同的個(gè)人賬戶號(hào)碼仅醇,最大12位;
- 最后1位是校驗(yàn)碼魔种,使用Luhn算法計(jì)算析二。
需要注意:2017年發(fā)布的ISO/IEC 7812-1中,刪除了對(duì)MII的定義描述节预,并將IIN碼由6位擴(kuò)展到了8位叶摄,但是由于總位數(shù)仍然最多19位,所以中間的個(gè)人賬戶號(hào)碼對(duì)應(yīng)的最大位數(shù)由12位減少至10位安拟。所以卡BIN不再只是6位蛤吓,也需要考慮兼容8位。
Luhn算法
Luhn算法糠赦,也稱為“模10”算法会傲,是一種簡單的校驗(yàn)和(Checksum)算法,一般用于驗(yàn)證身份識(shí)別號(hào)碼愉棱,例如信用卡號(hào)碼唆铐、國際移動(dòng)設(shè)備識(shí)別碼(International Mobile Equipment Identity,縮寫為IMEI)奔滑,美國供應(yīng)商識(shí)別號(hào)碼艾岂,加拿大社會(huì)保險(xiǎn)號(hào)碼,以色列身份證號(hào)碼朋其,希臘社會(huì)安全號(hào)碼等王浴。
Luhn算法在ISO/IEC 7812-1中定義,它不是一種安全的加密哈希函數(shù)梅猿,設(shè)計(jì)它的目的只是防止意外出錯(cuò)而不是惡意攻擊氓辣,即我們常說的防君子不防小人。
使用Luhn算法校驗(yàn)的步驟:
- 從右邊第1個(gè)數(shù)字(校驗(yàn)數(shù)字)開始偶數(shù)位乘以2袱蚓;
- 把步驟1種獲得的乘積的各位數(shù)字與原號(hào)碼中未乘2的各位數(shù)字相加钞啸;
- 如果步驟2得到的總和模10為0,則校驗(yàn)通過。
舉例說明:
筆者一張過期的信用卡號(hào)碼為6225760008219524体斩,根據(jù)上述步驟進(jìn)行校驗(yàn)。
序號(hào) | 卡號(hào) | 步驟1 | 步驟2 | 步驟3 |
---|---|---|---|---|
16 | 6 | 6 × 2 = 12 | 1 + 2 | = 3 |
15 | 2 | 2 | + 2 | = 5 |
14 | 2 | 2 × 2 = 4 | + 4 | = 9 |
13 | 5 | 5 | + 5 | = 14 |
12 | 7 | 7 × 2 = 14 | + 1 + 4 | = 19 |
11 | 6 | 6 | + 6 | = 25 |
10 | 0 | 0 × 2 = 0 | + 0 | = 25 |
9 | 0 | 0 | + 0 | = 25 |
8 | 0 | 0 × 2 = 0 | + 0 | = 25 |
7 | 8 | 8 | + 8 | = 33 |
6 | 2 | 2 × 2 = 4 | + 4 | = 37 |
5 | 1 | 1 | + 1 | = 38 |
4 | 9 | 9 × 2 = 18 | + 1 + 8 | = 47 |
3 | 5 | 5 | + 5 | = 52 |
2 | 2 | 2× 2 = 4 | + 4 | = 56 |
1 | 4 | 4 | + 4 | = 60 |
60 % 10 = 0絮吵,校驗(yàn)通過弧烤。大家可以據(jù)此嘗試校驗(yàn)自己的銀行卡號(hào)。
了解Lunh算法校驗(yàn)銀行卡號(hào)的方法后蹬敲,很容易推導(dǎo)出使用Luhn算法計(jì)算數(shù)字字符串的校驗(yàn)數(shù)字的方法暇昂,仍然以上述銀行卡號(hào)為例,去掉校驗(yàn)數(shù)字后伴嗡,剩余622576000821952急波,假設(shè)校驗(yàn)數(shù)字為,仍然根據(jù)上述步驟計(jì)算闹究。
序號(hào) | 卡號(hào) | 步驟1 | 步驟2 | 步驟3 |
---|---|---|---|---|
16 | 6 | 6 × 2 = 12 | 1 + 2 | = 3 |
15 | 2 | 2 | + 2 | = 5 |
14 | 2 | 2 × 2 = 4 | + 4 | = 9 |
13 | 5 | 5 | + 5 | = 14 |
12 | 7 | 7 × 2 = 14 | + 1 + 4 | = 19 |
11 | 6 | 6 | + 6 | = 25 |
10 | 0 | 0 × 2 = 0 | + 0 | = 25 |
9 | 0 | 0 | + 0 | = 25 |
8 | 0 | 0 × 2 = 0 | + 0 | = 25 |
7 | 8 | 8 | + 8 | = 33 |
6 | 2 | 2 × 2 = 4 | + 4 | = 37 |
5 | 1 | 1 | + 1 | = 38 |
4 | 9 | 9 × 2 = 18 | + 1 + 8 | = 47 |
3 | 5 | 5 | + 5 | = 52 |
2 | 2 | 2× 2 = 4 | + 4 | = 56 |
1 | + |
= 56 + |
若要等式 ( 56 + ) % 10 = 0 成立幔崖,很容易得到
= 4,與實(shí)際銀行卡號(hào)相符渣淤。
代碼實(shí)現(xiàn)如下:
/**
* Luhn算法工具類
* <p>
* Luhn算法在ISO/IEC 7812-1中定義,使用Luhn算法進(jìn)行字符串的校驗(yàn)以及生成校驗(yàn)數(shù)字
* </p>
*
*/
public class LuhnUtil {
/**
* 校驗(yàn)字符串
* <p>
* 1. 從右邊第1個(gè)數(shù)字(校驗(yàn)數(shù)字)開始偶數(shù)位乘以2吉嫩;<br>
* 2. 把在步驟1種獲得的乘積的各位數(shù)字與原號(hào)碼中未乘2的各位數(shù)字相加价认;<br>
* 3. 如果在步驟2得到的總和模10為0,則校驗(yàn)通過自娩。
* </p>
*
* @param withCheckDigitString 含校驗(yàn)數(shù)字的字符串
* @return true - 校驗(yàn)通過<br>
* false-校驗(yàn)不通過
* @throws IllegalArgumentException 如果字符串為空或不是8~19位的數(shù)字
*/
public static boolean checkString(String withCheckDigitString) {
if (withCheckDigitString == null) {
throw new IllegalArgumentException();
}
// 6位IIN+最多12位自定義數(shù)字+1位校驗(yàn)數(shù)字
// 注意ISO/IEC 7812-1:2017中重新定義8位IIN+最多10位自定義數(shù)字+1位校驗(yàn)數(shù)字
// 這里為了兼容2017之前的版本用踩,使用8~19位數(shù)字校驗(yàn)
if (!withCheckDigitString.matches("^\\d{8,19}$")) {
throw new IllegalArgumentException();
}
return sum(withCheckDigitString) % 10 == 0;
}
/**
* 計(jì)算校驗(yàn)數(shù)字
* <p>
* 1. 從右邊第1個(gè)數(shù)字(校驗(yàn)數(shù)字)開始偶數(shù)位乘以2;<br>
* 2. 把在步驟1種獲得的乘積的各位數(shù)字與原號(hào)碼中未乘2的各位數(shù)字相加忙迁;<br>
* 3. 用10減去在步驟2得到的總和模10脐彩,得到校驗(yàn)數(shù)字。
* </p>
*
* @param withoutCheckDigitString 不含校驗(yàn)數(shù)字的字符串
* @return 校驗(yàn)數(shù)字
* @throws IllegalArgumentException 如果字符串為空或不是7~18位的數(shù)字
*/
public static int computeCheckDigit(String withoutCheckDigitString) {
if (withoutCheckDigitString == null) {
throw new IllegalArgumentException();
}
// 6位IIN+最多12位自定義數(shù)字
// 注意ISO/IEC 7812-1:2017中重新定義8位IIN+最多10位自定義數(shù)字
// 這里為了兼容2017之前的版本姊扔,使用7~18位數(shù)字校驗(yàn)
if (!withoutCheckDigitString.matches("^\\d{7,18}$")) {
throw new IllegalArgumentException();
}
// 因?yàn)槭遣缓r?yàn)數(shù)字的字符串惠奸,為了統(tǒng)一sum方法,在后面補(bǔ)0恰梢,不會(huì)影響計(jì)算
return 10 - sum(withoutCheckDigitString + "0") % 10;
}
/**
* 根據(jù)Luhn算法計(jì)算字符串各位數(shù)字之和
* <p>
* 1. 從右邊第1個(gè)數(shù)字(校驗(yàn)數(shù)字)開始偶數(shù)位乘以2佛南;<br>
* 2. 把在步驟1種獲得的乘積的各位數(shù)字與原號(hào)碼中未乘2的各位數(shù)字相加。<br>
* </p>
*
* @param str
* @return
*/
private static int sum(String str) {
char[] strArray = str.toCharArray();
int n = strArray.length;
int sum = 0;
for (int i = n; i >= 1; i--) {
int a = strArray[n - i] - '0';
// 偶數(shù)位乘以2
if (i % 2 == 0) {
a *= 2;
}
// 十位數(shù)和個(gè)位數(shù)相加嵌言,如果不是偶數(shù)位嗅回,不乘以2,則十位數(shù)為0
sum = sum + a / 10 + a % 10;
}
return sum;
}
}
實(shí)際應(yīng)用
銀行卡信息查詢
在金融行業(yè)軟件系統(tǒng)中摧茴,銀行卡號(hào)可謂是重要元素绵载,但是,銀行卡號(hào)本身承載的信息并不多,從上面講述的內(nèi)容來看娃豹,卡BIN是我們可以從銀行卡號(hào)中獲取的唯一信息猜惋,然而,卡BIN對(duì)于絕大多數(shù)人來說培愁,使用起來并不友好著摔,因?yàn)橛成潢P(guān)系并不容易獲取。
當(dāng)然定续,互聯(lián)網(wǎng)上內(nèi)容包羅萬象谍咆,區(qū)區(qū)卡BIN何足掛齒,網(wǎng)站私股、論壇到處都可下載摹察,不過很多人忽略了一個(gè)問題,卡BIN是需要更新的倡鲸,互聯(lián)網(wǎng)上可以輕易下載到的卡BIN只是某個(gè)時(shí)間的快照供嚎,實(shí)效性難以保證。
筆者還看到有人提及支付寶的查詢接口(https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?cardNo=6225760008219524&cardBinCheck=true)峭状,筆者使用之前的過期卡號(hào)克滴,接口返回cardType="CC"表示信用卡,bank="CMB"表示招商銀行优床。支付寶作為國內(nèi)最大的第三方支付平臺(tái)劝赔,其卡BIN的準(zhǔn)確性與實(shí)效性理論上可以得到保證,但是筆者并不清楚其卡BIN來源胆敞,估計(jì)是銀行或銀聯(lián)着帽。
數(shù)據(jù)從源頭獲取,準(zhǔn)確性與實(shí)效性必然更勝一籌移层,筆者這里要推薦的卡BIN查詢接口正是銀聯(lián)提供仍翰,銀聯(lián)在其開放平臺(tái)(https://open.unionpay.com/)提供了若干接口,其中就包括了銀行卡信息查詢(https://open.unionpay.com/tjweb/api/detail?apiSvcId=51)接口观话,該接口可以根據(jù)銀行卡卡號(hào)予借,返回發(fā)卡行、發(fā)卡行機(jī)構(gòu)代碼匪燕、卡性質(zhì)蕾羊、卡類別、卡種帽驯、卡品牌龟再、卡產(chǎn)品、卡等級(jí)尼变、卡介質(zhì)利凑、所屬總行機(jī)構(gòu)中文名稱浆劲、所屬總行機(jī)構(gòu)中文簡稱。
接口返回的內(nèi)容可以說是相當(dāng)全面了哀澈,但是筆者開發(fā)項(xiàng)目中并未使用過該接口牌借,因此不能擔(dān)保其性能,不過銀聯(lián)的權(quán)威性毋庸置疑割按,如需商業(yè)合作可以放心致電洽談膨报,銀聯(lián)的服務(wù)還是很專業(yè)的。
資費(fèi)詳情:本產(chǎn)品推廣期為2017年10月1日至2018年9月30日适荣,推廣期內(nèi)本產(chǎn)品可免費(fèi)使用现柠。推廣期過后的收費(fèi)標(biāo)準(zhǔn)將提前30個(gè)工作日在本平臺(tái)另行公示。
到目前為止弛矛,筆者沒有看到收費(fèi)標(biāo)準(zhǔn)公示够吩,是否可以理解為仍然可以免費(fèi)使用?
驗(yàn)證銀行卡信息
銀聯(lián)開放平臺(tái)(https://open.unionpay.com/)同時(shí)為我們提供了另外一個(gè)優(yōu)秀的接口丈氓,驗(yàn)證銀行卡信息(https://open.unionpay.com/tjweb/api/detail?apiSvcId=21)周循。我們可以通過以下5種方式進(jìn)行驗(yàn)證,靈活組合万俗,按需選擇:
- 兩要素:銀行卡號(hào)+姓名
- 兩要素:銀行卡號(hào)+身份證號(hào)
- 三要素:銀行卡號(hào)+姓名+身份證號(hào)
- 四要素:銀行卡號(hào)+姓名+身份證號(hào)+銀行預(yù)留手機(jī)號(hào)
- 六要素:銀行卡號(hào)+姓名+身份證號(hào)+銀行預(yù)留手機(jī)號(hào)+CVN2+有效期
根據(jù)個(gè)人項(xiàng)目經(jīng)驗(yàn)湾笛,推薦借記卡使用四要素驗(yàn)證,貸記卡使用六要素驗(yàn)證该编,畢竟驗(yàn)證要素越多迄本,驗(yàn)證就越可靠。
程序設(shè)計(jì)
有了Luhn算法以及銀聯(lián)開放平臺(tái)提供的2個(gè)接口课竣,我們應(yīng)該如何設(shè)計(jì)我們的程序(產(chǎn)品)呢?
對(duì)輸入要素進(jìn)行初步校驗(yàn)
?
使用Luhn算法校驗(yàn)銀行卡號(hào)置媳,使用上篇身份證號(hào)碼的編碼規(guī)則及校驗(yàn)介紹的公式校驗(yàn)身份證號(hào)于樟。
銀行預(yù)留手機(jī)號(hào)的校驗(yàn)
?
這里需要注意的是:銀行預(yù)留手機(jī)號(hào),有時(shí)候你認(rèn)為預(yù)留了拇囊,但是可能沒有預(yù)留迂曲。如果客戶堅(jiān)持自己填寫信息無誤,那么請(qǐng)客戶致電銀行查詢預(yù)留手機(jī)號(hào)是解決問題的一個(gè)思路寥袭。
?
這里說的銀行預(yù)留手機(jī)號(hào)的校驗(yàn)路捧,主要是為了校驗(yàn)手機(jī)是否在客戶本人身上,可以通過短信驗(yàn)證碼的方式校驗(yàn)传黄,其必要性:一是杰扫,從安全性出發(fā),手機(jī)的竊取往往比銀行卡相關(guān)信息的竊取成本更高膘掰;二是章姓,畢竟銀聯(lián)開放平臺(tái)提供的2個(gè)接口后續(xù)使用過程中極有可能都是需要收費(fèi)的,一條短信的價(jià)格往往更加便宜,優(yōu)先排除掉不合格的信息凡伊,從而提高后續(xù)驗(yàn)證的成功率零渐。
?調(diào)用銀行卡信息查詢接口
?
經(jīng)過初步的信息校驗(yàn)通過,我們可以調(diào)用銀聯(lián)的第1個(gè)接口了系忙,銀行卡信息查詢诵盼,銀聯(lián)返回的信息比較全面,筆者的建議是全部記錄下來银还,當(dāng)系統(tǒng)中積累的銀行卡數(shù)據(jù)足夠多的時(shí)候风宁,通過一定的數(shù)據(jù)分析手段,恭喜你见剩,你擁有了自己的卡BIN數(shù)據(jù)杀糯,每月更新一次,足矣苍苞。
?
從這個(gè)接口固翰,可以看出銀聯(lián)的高明之處,它不直接告訴你卡BIN羹呵,讓你每次都要調(diào)用它的接口查詢骂际,授人以漁何以授人以魚。(大家在制定接口時(shí)冈欢,要注意:從安全性和不可替代性出發(fā)歉铝,核心數(shù)據(jù)不能泄露,盡量使用驗(yàn)證代替查詢凑耻,這樣也有利于提高接口使用率太示,增加用戶粘性;同時(shí)香浩,記錄盡量多的請(qǐng)求方數(shù)據(jù)类缤,便于日后的數(shù)據(jù)分析,也符合當(dāng)前大數(shù)據(jù)的趨勢(shì)邻吭。)
?
調(diào)用這個(gè)接口餐弱,一方面可以積累數(shù)據(jù),另一方面可以確定客戶的銀行卡性質(zhì)囱晴,是借記卡還是貸記卡膏蚓;借記卡和貸記卡在進(jìn)行驗(yàn)證時(shí),驗(yàn)證要素略有差異畸写,筆者開發(fā)項(xiàng)目過程中接觸的銀行卡驗(yàn)證驮瞧,除了銀行卡號(hào)、姓名艺糜、身份證號(hào)剧董、手機(jī)號(hào)四要素之外幢尚,借記卡可以額外驗(yàn)證密碼,貸記卡可以額外驗(yàn)證CVN2翅楼、有效期尉剩,目前發(fā)行的芯片借記卡也有CVN2、有效期毅臊,但是筆者項(xiàng)目中從來沒有對(duì)此驗(yàn)證過理茎,不知銀聯(lián)這個(gè)接口是否可以驗(yàn)證。
?
有時(shí)管嬉,為了提升客戶體驗(yàn)皂林,借記卡的密碼,貸記卡的CVN2蚯撩、有效期也不做驗(yàn)證础倍。便利性與安全性是需要互相妥協(xié)的,但是它們不是魚與熊掌胎挎,通過技術(shù)手段完全可以魚與熊掌兼得沟启。
?調(diào)用驗(yàn)證銀行卡信息接口
?
最后,我們終于可以調(diào)用銀聯(lián)的第2個(gè)接口了犹菇。
數(shù)據(jù)安全存儲(chǔ)
到這里德迹,你以為結(jié)束了嗎?其實(shí)還沒有揭芍,還有一個(gè)重要的問題胳搞,那就是數(shù)據(jù)安全存儲(chǔ)。
- 銀行卡號(hào)称杨,身份證號(hào)肌毅,手機(jī)號(hào),建議加密存儲(chǔ)姑原;
- 借記卡密碼芽腾,貸記卡CVN2、有效期页衙,建議不存儲(chǔ);
- 數(shù)據(jù)安全存儲(chǔ)阴绢,不單單指數(shù)據(jù)庫店乐,建議肉眼可見的介質(zhì)之上都做安全存儲(chǔ),比如應(yīng)用程序日志呻袭、數(shù)據(jù)同步文件等;
- 數(shù)據(jù)傳輸過程中眨八,理應(yīng)也如此,銀聯(lián)接口中CVN2左电、有效期就要求RSA加密廉侧。
信息安全页响,多管齊下,CSDN段誊、攜程闰蚕、華住的悲劇才不會(huì)繼續(xù)上演。
數(shù)據(jù)加密算法相關(guān)內(nèi)容连舍,后續(xù)會(huì)開辟新篇專題交流没陡。