一種銀行卡號自選方法及裝置的制造方法
【專利摘要】本發(fā)明提供一種銀行卡號自選方法及裝置,其中,該方法包括:確定用戶自選位的數(shù)值;根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,確定擠兌位的數(shù)值;將擠兌位的數(shù)值、用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼組合生成自選銀行卡號;將生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行卡號進行比對,若生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行號碼相同,則重新確定用戶自選位的數(shù)值,若生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行號碼不同,則確定生成的自選銀行卡號可用。采用本發(fā)明方法可以實現(xiàn)用戶對銀行卡號的自主選擇,滿足用戶的個性化需求。
【專利說明】
一種銀行卡號自選方法及裝置
技術(shù)領域
[0001]本發(fā)明涉及號碼選擇技術(shù)領域,特別涉及一種銀行卡號自選方法及裝置。
【背景技術(shù)】
[0002]在平常生活中,對號碼的選取接觸的最多的就是手機號碼的選取,其選號方式是:各個號碼銷售點將能夠提供的手機號碼全部羅列出來,顧客在所提供的號碼中選擇自己喜歡的號碼,例如有幾個連續(xù)相同的數(shù)字的號碼、在號碼中8和6出現(xiàn)較多的號碼等等,這種號碼出售方式較以往的只負責提供一個能夠使用的號碼的方式提高了靈活性,滿足顧客的個性化需求。
[0003]而對于銀行而言,一般是用戶填寫好資料,申請銀行卡的時候,銀行會自動分配給用戶一個號碼。銀行卡號主要由發(fā)卡機構(gòu)標識代碼(BIN)、發(fā)卡機構(gòu)自定義位和校驗位共三部分組成。其中,發(fā)卡機構(gòu)標識代碼(BIN)為前6位數(shù)字,校驗位為卡號最后I位,中間位數(shù)為發(fā)卡機構(gòu)自定義位,發(fā)卡機構(gòu)自定義位可以包括發(fā)卡地區(qū)碼和卡序號,如圖1所示,也可以不包括發(fā)卡地區(qū)碼,只包括卡序號,如圖2所示?,F(xiàn)有的銀行卡號都是銀行自主分配給用戶的,用戶沒有自主選擇權(quán),這樣不能滿足用戶的個性化需求。
【發(fā)明內(nèi)容】
[0004]本發(fā)明實施例提供了一種銀行卡號自選方法,可以滿足用戶的個性化需求。該方法包括:
[0005]確定用戶自選位的數(shù)值;
[0006]根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,確定擠兌位的數(shù)值;在銀行卡號中預設的可自選位中去除用戶自選位后剩余的為擠兌位,擠兌位位于用戶自選位之前;
[0007]將擠兌位的數(shù)值、用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼組合生成自選銀行卡號;
[0008]將生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行卡號進行比對,若生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行號碼相同,則重新確定用戶自選位的數(shù)值,若生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行號碼不同,則確定生成的自選銀行卡號可用。
[0009]在一個實施例中,所述根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,確定擠兌位的數(shù)值,包括:
[0010]根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法確定擠兌位的數(shù)值。
[0011 ]在一個實施例中,所述根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法確定擠兌位的數(shù)值,具體包括:
[0012]當擠兌位的位數(shù)為一位時,根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法反演確定一位擠兌位的數(shù)值;
[0013]當擠兌位的位數(shù)為η位時,按數(shù)值由小到大的順序確定擠兌位前η-1位的數(shù)值,根據(jù)用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和擠兌位前η-1位的數(shù)值,利用Luhn算法反演確定擠兌位第η位的數(shù)值,其中,η大于等于2,n為整數(shù)。
[0014]在一個實施例中,所述當擠兌位的位數(shù)為一位時,根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法反演確定一位擠兌位的數(shù)值,具體包括:
[0015]當一位擠兌位為奇數(shù)位時,將擠兌位的數(shù)值和校驗位的數(shù)值交換,根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法反演確定奇數(shù)位擠兌位的數(shù)值;所述校驗位為用戶自選位的最后一位;
[0016]當一位擠兌位為偶數(shù)位時,將擠兌位的數(shù)值和校驗位的數(shù)值交換,根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法反演后再進行除2逆向計算,確定偶數(shù)位擠兌位的數(shù)值;
[0017]所述奇數(shù)位或偶數(shù)位按如下方式確定:
[0018]從用戶自選位的最后一位開始往前數(shù)。
[0019]在一個實施例中,在確定擠兌位前η-1位的數(shù)值之前,還包括:
[0020]查詢當前序號發(fā)生器序號;
[0021]所述按數(shù)值由小到大的順序確定擠兌位前η-1位的數(shù)值,具體包括:
[0022]從當前序號發(fā)生器序號中相應的擠兌位的數(shù)值開始,按數(shù)值由小到大的順序確定擠兌位前η-1位的數(shù)值。
[0023]在一個實施例中,所述根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,確定擠兌位的數(shù)值,具體包括:
[0024]根據(jù)用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和發(fā)卡地區(qū)碼,利用Luhn算法確定擠兌位的數(shù)值;
[0025]所述將擠兌位的數(shù)值、用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼組合生成自選銀行卡號,具體包括:
[0026]將擠兌位的數(shù)值、用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和發(fā)卡地區(qū)碼組合生成自選銀行卡號。
[0027]本發(fā)明實施例還提供了一種銀行卡號自選裝置,可以滿足用戶的個性化需求。該裝置包括:
[0028]自選位數(shù)值確定模塊,用于用戶自選位的數(shù)值;
[0029]擠兌位確定模塊,用于根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,確定擠兌位的數(shù)值;在銀行卡號中預設的可自選位中去除用戶自選位后剩余的為擠兌位,擠兌位位于用戶自選位之前;
[0030]自選銀行卡號生成模塊,用于將擠兌位的數(shù)值、用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼組合生成自選銀行卡號;
[0031]比對模塊,用于將生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行卡號進行比對,若生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行號碼相同,則重新確定用戶自選位的數(shù)值,若生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行號碼不同,則確定生成的自選銀行卡號可用。
[0032]在一個實施例中,所述擠兌位確定模塊具體用于:
[0033]根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法確定擠兌位的數(shù)值。
[0034]在一個實施例中,所述擠兌位確定模塊具體用于:
[0035]當擠兌位的位數(shù)為一位時,根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法反演確定一位擠兌位的數(shù)值;
[0036]當擠兌位的位數(shù)為η位時,按數(shù)值由小到大的順序確定擠兌位前n-1位的數(shù)值,根據(jù)用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和擠兌位前η-1位的數(shù)值,利用Luhn算法反演確定擠兌位第η位的數(shù)值,其中,η大于等于2,n為整數(shù)。
[0037]在一個實施例中,所述擠兌位確定模塊具體用于:
[0038]當一位擠兌位為奇數(shù)位時,將擠兌位的數(shù)值和校驗位的數(shù)值交換,根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法反演確定奇數(shù)位擠兌位的數(shù)值;所述校驗位為用戶自選位的最后一位;
[0039]當一位擠兌位為偶數(shù)位時,將擠兌位的數(shù)值和校驗位的數(shù)值交換,根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法反演后再進行除2逆向計算,確定偶數(shù)位擠兌位的數(shù)值;
[0040]所述奇數(shù)位或偶數(shù)位按如下方式確定:
[0041 ]從用戶自選位的最后一位開始往前數(shù)。
[0042]在一個實施例中,還包括:
[0043]查詢模塊,用于查詢當前序號發(fā)生器序號;
[0044]所述擠兌位確定模塊具體用于:
[0045]從當前序號發(fā)生器序號中相應的擠兌位的數(shù)值開始,按數(shù)值由小到大的順序確定擠兌位前η-1位的數(shù)值。
[0046]在一個實施例中,所述擠兌位確定模塊具體用于:
[0047]根據(jù)用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和發(fā)卡地區(qū)碼,利用Luhn算法確定擠兌位的數(shù)值;
[0048]所述自選銀行卡號生成模塊具體用于:
[0049]將擠兌位的數(shù)值、用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和發(fā)卡地區(qū)碼組合生成自選銀行卡號。
[0050]在本發(fā)明實施例中,用戶首先確定自選位的數(shù)值,然后根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,確定擠兌位的數(shù)值,再將擠兌位的數(shù)值、用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼組合生成自選銀行卡號,最后將自選銀行卡號與數(shù)據(jù)庫中已存的銀行卡號進行比對,確定該自選銀行卡號是否可用,通過本發(fā)明方法可以使用戶自己選擇銀行卡號,可以滿足用戶的個性化需求。
【附圖說明】
[0051]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0052]圖1是一種銀行卡號組成形式示意圖;
[0053]圖2是另一種銀行卡號組成形式示意圖;
[0054]圖3是一種銀行卡號自選方法流程圖;
[0055]圖4是一種Luhn算法不意圖;
[0056]圖5是當擠兌位為奇數(shù)位時卡號示意圖;
[0057]圖6是當擠兌位為偶數(shù)位時卡號示意圖;
[0058]圖7是當擠兌位為2位時卡號示意圖;
[0059]圖8是當擠兌位為3位時卡號示意圖;
[0060]圖9是一種銀行卡號自選裝置結(jié)構(gòu)示意圖。
【具體實施方式】
[0061]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0062]現(xiàn)有的銀行卡號都是由銀行自主設置,讓后下發(fā)給用戶的,用戶不能自己選擇自己喜歡的號碼,這樣不能滿足用戶的個性化需求?;诖耍诒景l(fā)明實施例中,提出了一種銀行卡號自選方法及裝置。
[0063]圖3是一種銀行卡號自選方法流程圖;如圖3所示,該方法包括:
[0064]步驟301:確定用戶自選位的數(shù)值;
[0065]步驟302:根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,確定擠兌位的數(shù)值;在銀行卡號中預設的可自選位中去除用戶自選位后剩余的為擠兌位,擠兌位位于用戶自選位之
、廣.刖;
[0066]步驟303:將擠兌位的數(shù)值、用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼組合生成自選銀行卡號;
[0067]步驟304:將生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行卡號進行比對,若生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行號碼相同,則重新確定用戶自選位的數(shù)值,若生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行號碼不同,則確定生成的自選銀行卡號可用。
[0068]具體實施時,用戶自選位的位數(shù)為卡序號(銀行卡號中預設的可自選位)的位數(shù),一般情況下是卡序號位全部由用戶自選成喜歡的號碼,然后通過計算獲得校驗位的數(shù)值,然后驗證用戶自選卡號是否可用。但本發(fā)明是用戶自行設定校驗位的數(shù)值和部分卡序號位的數(shù)值,然后通過計算獲得卡序號位中剩余未被用戶選擇的位的數(shù)值,然后驗證用戶自選卡號是否可用。
[0069]目前國內(nèi)大部分發(fā)行的銀行卡的卡號長度為16位或者19位。以國內(nèi)四大行之一中國銀行發(fā)行的卡號為例,借記卡長度為19位,主要由6位BIN+4位發(fā)卡地區(qū)碼+8位序號+1位校驗位組成;準貸記卡的卡號長度目前是16位,主要由6位BIN+2位發(fā)卡地區(qū)碼+7位序號+1位校驗位組成。國內(nèi)貸記卡的卡號長度目前是16位,主要由6位BIN+9位序號+1位校驗位組成。由此可知,銀行卡號分兩種情況:一種是沒有發(fā)卡地區(qū)碼,另一種是有發(fā)卡地區(qū)碼。
[0070]針對第一種情況,在用戶確定了自選位的數(shù)值之后,需要根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,確定擠兌位的數(shù)值。針對第二種情況,在用戶確定了自選位的數(shù)值之后,需要根據(jù)用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和發(fā)卡地區(qū)碼,確定擠兌位的數(shù)值。其中,擠兌位:當用戶自選的位數(shù)小于可以自選的位數(shù)時,未選擇的位數(shù)即為擠兌位。如圖1所示,用戶自選后7位(包括校驗位),可自選的為后9位,則擠兌位為倒數(shù)第8、9位,即圖示的X、Y。校驗位:位置位于卡號最后I位數(shù)字,如圖1所示。其目的并不是用于數(shù)字加密,而是為了有效防止偶然的輸入性錯誤。
[0071]在本例中,在確定擠兌位的數(shù)值時,本發(fā)明采用的是Luhn算法。Luhn算法由IBM的Hans Peter Luhn發(fā)明,又稱為“模10”算法。它是一種簡單的校驗和算法,用來驗證識別號碼,廣泛地應用于銀行卡號、ΜΕΙ號、社會保險號的合法性驗證。首先,從卡號的最后一位數(shù)字開始,偶數(shù)位乘以2,如果乘積是兩位數(shù),則將兩個位上的數(shù)字相加保存。然后將所有數(shù)字相加求和。如果卡號是合法的,則總和能被10整除。下面以19位借記卡號為例,如圖4所示,最右邊X為fe驗位,說明Luhn算法:
[0072]1、從卡號最后一位起,偶數(shù)位進行乘2操作,然后和其余位的數(shù)字進行累加求和操作;其中乘2操作所得> = 10的,十位數(shù)和個位數(shù)進行累加求和(即減9進行累加);對于乘2操作所得〈10的,正常累加求和。計算公式如下:
[0073]SUM=X+(8*2-9)+7+(6*2-9)+5+(4*2)+3+(2*2)+l+(0*2)+0+(l*2)+0+(l*2)+6+(6*2-9)+1+(2*2)+6 = Χ+62;
[0074]2、根據(jù)Luhn算法,SUM模10為O。即(X+62)mod 10 = 0,所以校驗位X = 8。具體實施時,由于用戶自選位的位數(shù)不定,因此擠兌位的位數(shù)也是不定的。擠兌位的位數(shù)可以是I位,也可以是η位,其中,η大于等于2,n為整數(shù)。在本例中,確定擠兌位的算法如下:
[0075]針對第一種情況(不包括發(fā)卡地區(qū)碼):
[0076]當擠兌位I位時,根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法反演確定I位擠兌位的數(shù)值。
[0077]當擠兌位的位數(shù)為η位時,按數(shù)值由小到大的順序確定擠兌位前η-1位的數(shù)值(因為銀行卡號都是按照遞增序號進行發(fā)卡),根據(jù)用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和擠兌位前η-1位的數(shù)值,利用Luhn算法反演確定擠兌位第η位的數(shù)值。
[0078]具體的,當擠兌位2位時,為保證卡號從小到大順序生成,則先確定擠兌位第一位數(shù)值,從0-9依次嘗試,擠兌位的第二位則根據(jù)用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和擠兌位前I位的數(shù)值,利用Luhn算法反演而得。
[0079]當擠兌位3位時,為保證卡號從小到大順序生成,則先確定擠兌位前兩位數(shù)值,從00-99依次嘗試;擠兌位的第三位則根據(jù)用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和擠兌位前2位的數(shù)值,利用Luhn算法反演而得。
[0080]擠兌位為4,5,6.._,η位的處理方式以此類推。
[0081 ]針對第二種情況(包括發(fā)卡地區(qū)碼):
[0082]當擠兌位I位時,根據(jù)用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和發(fā)卡地區(qū)碼,利用Luhn算法反演確定I位擠兌位的數(shù)值。
[0083]當擠兌位的位數(shù)為η位時,按數(shù)值由小到大的順序確定擠兌位前η-1位的數(shù)值,根據(jù)用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼、發(fā)卡地區(qū)碼和擠兌位前η-1位的數(shù)值,利用Luhn算法反演確定擠兌位第η位的數(shù)值。
[0084]具體的,當擠兌位2位時,為保證卡號從小到大順序生成,則先確定擠兌位第一位數(shù)值,從0-9依次嘗試,擠兌位的第二位則根據(jù)用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼、發(fā)卡地區(qū)碼和擠兌位前I位的數(shù)值,利用Luhn算法反演而得。
[0085]當擠兌位3位時,為保證卡號從小到大順序生成,則先確定擠兌位前兩位數(shù)值,從00-99依次嘗試;擠兌位的第三位則根據(jù)用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼、發(fā)卡地區(qū)碼和擠兌位前2位的數(shù)值,利用Luhn算法反演而得。
[0086]擠兌位為4,5,6-_,11位的處理方式以此類推。
[0087]具體實施時,當擠兌位為I位時,其值直接根據(jù)Luhn算法反演而得。Luhn算法驗證要求,對于生成的卡號,從最末位開始,每隔一位乘以2,然后累加求和,最后累加校驗位后,其結(jié)果模10后余數(shù)應為O。因為隔位需乘2,所以存在擠兌位是否乘2兩種情況,即從卡號最末位(用戶自選位的最后一位)開始往前數(shù),確定擠兌位是奇數(shù)位還是偶數(shù)位。以下進行分別計算說明:
[0088]A.當擠兌位為奇數(shù)位時,將擠兌位的數(shù)值和校驗位的數(shù)值交換,根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法反演確定奇數(shù)位擠兌位的數(shù)值?;?,根據(jù)用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和發(fā)卡地區(qū)碼,利用Luhn算法反演確定奇數(shù)位擠兌位的數(shù)值。
[0089]為說明方便,以卡號為19位數(shù)字(包括發(fā)卡地區(qū)碼)進行說明。如圖5所示,對于用戶自選尾數(shù)為88888888的19位借記卡號,擠兌位對安照Luhn算法,在計算的過程中是沒有進行乘2操作;且卡號最后的校驗位在Luhn算法驗證求和時也不進行乘2操作。因此,我們可以將擠兌位X和校驗位的角色互換,按照Luhn算法重新計算,反演出的校驗位的值其實就是擠兌位的值。
[0090]擠兌位和校驗位角色互換后,按照Luhn算法反演擠兌位過程如下:
[0091]SUM=(8*2-9)+8+(8*2-9)+8+(8*2-9)+8+(8*2-9)+8【校驗位】+(0*2)+0+(1*2)+0+(1*2)+6+(6*2-9)+1+(2*2)+6 = 84;
[0092]反演擠兌位=10-(SUM mod 10) = 10-(84mod 10) = 6。即圖5所示用戶自選尾數(shù)為8888888的卡號值為 “6216610100688888888”。
[0093]B.當擠兌位為偶數(shù)位時,將擠兌位的數(shù)值和校驗位的數(shù)值交換,根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法反演后再進行除2逆向計算,確定偶數(shù)位擠兌位的數(shù)值。或,根據(jù)用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和發(fā)卡地區(qū)碼,利用Luhn算法反演后再進行除2逆向計算,確定偶數(shù)位擠兌位的數(shù)值。
[0094]為說明方便,以卡號為16位數(shù)字(不包括發(fā)卡地區(qū)碼)進行說明。如圖6所示,對于用戶自選尾數(shù)為123456789的9位借記卡號,按照Luhn算法,在計算的過程中擠兌位X需進行乘2操作,而卡號最后的校驗位在Luhn算法驗證求和時進行乘2操作。因此,我們將擠兌位X和校驗位的角色互換計算后需進行除2逆向計算,反演出擠兌位的值。計算過程如下:
[0095]SUM=(8*2-9)+7+(6*2-9)+5+(4*2)+3+(2*2)+l+9【校驗位】+6+(6*2-9)+6+(9*2-9)+0+(4*2)=79;
[0096]10-(SUM mod 10) = 10_(79mod 10) = I,反演擠兌位=(1+9)/2 = 5。
[0097]舉例說明當擠兌位2位時,擠兌位的確定算法。
[0098]為保證卡號從小到大順序生成,先確定擠兌位第一位數(shù)值,從0-9依次嘗試,第二位則根據(jù)Luhn算法反演而得。如圖7所示,由于X的取值為O至9共10種情況,因此按照Luhn算法符合用戶自選7位尾數(shù)的卡號理論上存在10個(不考慮重復發(fā)號)。當X的值固定后,則計算擠兌位Y時,算法反演過程同“擠兌位長度為I位數(shù)”。
[0099]按照Luhn算法反演計算符合條件的10個銀行卡號分別為:
[0100]6216610100068888888
[0101]6216610100118888888
[0102]6216610100258888888
[0103]6216610100308888888
[0104]6216610100498888888
[0105]6216610100548888888
[0106]6216610100688888888
[0107]6216610100738888888
[0108]6216610100878888888
[0109]6216610100928888888
[0110]具體實施時,銀行卡號都是按照遞增序號進行發(fā)卡的,因此銀行會通過序號發(fā)生器進行計數(shù),記錄銀行卡號發(fā)放到哪一個數(shù)值。在本例中,在確定擠兌位前η-1位的數(shù)值之前,還包括:
[0111]查詢當前序號發(fā)生器序號;
[0112]從當前序號發(fā)生器序號中相應的擠兌位的數(shù)值開始,按數(shù)值由小到大的順序確定擠兌位前η-1位的數(shù)值。
[0113]具體的,以卡號為19位數(shù)字(包括發(fā)卡地區(qū)碼)進行說明。當前序號發(fā)生器序號為6216610100065555555。當自選號中擠兌位為兩位時,如圖7所示,其中06為當前序號發(fā)生器序號中的擠兌位,若用戶自選號的后幾位為8888888,則自選號的擠兌位X的數(shù)值可以從O開始,擠兌位Y利用Luhn算法反演得到。當自選號中擠兌位為三位時,如圖8所示,其中065為當前序號發(fā)生器序號中的擠兌位,若用戶自選號的后幾位為888888,則自選號的擠兌位XY的數(shù)值可以從06開始,擠兌位Z利用Luhn算法反演得到。
[0114]具體實施時,在確定了擠兌位的數(shù)值之后,針對第一種情況(不包括發(fā)卡地區(qū)碼):將擠兌位的數(shù)值、用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼組合生成自選銀行卡號。針對第二種情況(包括發(fā)卡地區(qū)碼):將擠兌位的數(shù)值、用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和發(fā)卡地區(qū)碼組合生成自選銀行卡號。
[0115]在生成了自選銀行卡號后,需要將自選銀行卡號和數(shù)據(jù)庫中已存的卡號進行比對查詢,如果自選銀行卡號和數(shù)據(jù)庫中已存的銀行號碼相同,表示該號碼已發(fā)行,則跳過該號碼,防止卡號重復發(fā)行,讓用戶重新確定自選位的數(shù)值;或者,請用戶確認識否同意銀行自主修改一位或者幾位自選位的數(shù)值,若用戶同意,銀行通過上述步驟生成修改一位或者幾位自選位的幾個銀行卡號,并且生成的幾個銀行卡號是可用的,請用戶選擇其中一個。當生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行號碼不同,表示該號碼未發(fā)行,確定生成的自選銀行卡號可用。
[0116]基于同一發(fā)明構(gòu)思,本發(fā)明實施例中還提供了一種銀行卡號自選裝置,如下面的實施例所述。由于銀行卡號自選裝置解決問題的原理與銀行卡號自選方法相似,因此銀行卡號自選裝置的實施可以參見銀行卡號自選方法的實施,重復之處不再贅述。以下所使用的,術(shù)語“單元”或者“模塊”可以實現(xiàn)預定功能的軟件和/或硬件的組合。盡管以下實施例所描述的裝置較佳地以軟件來實現(xiàn),但是硬件,或者軟件和硬件的組合的實現(xiàn)也是可能并被構(gòu)想的。
[0117]圖9是一種銀行卡號自選裝置結(jié)構(gòu)示意圖,如圖9所示,該裝置包括:
[0?18]自選位數(shù)值確定模塊901,用于用戶自選位的數(shù)值;
[0119]擠兌位確定模塊902,用于根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,確定擠兌位的數(shù)值;在銀行卡號中預設的可自選位中去除用戶自選位后剩余的為擠兌位,擠兌位位于用戶自選位之前;
[0120]自選銀行卡號生成模塊903,用于將擠兌位的數(shù)值、用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼組合生成自選銀行卡號;
[0121]比對模塊904,用于將生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行卡號進行比對,若生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行號碼相同,則重新確定用戶自選位的數(shù)值,若生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行號碼不同,則確定生成的自選銀行卡號可用。
[0122]具體實施時,擠兌位確定模塊902具體用于:
[0123]根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法確定擠兌位的數(shù)值。
[0124]具體實施時,擠兌位確定模塊902具體用于:
[0125]當擠兌位的位數(shù)為一位時,根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法反演確定一位擠兌位的數(shù)值;
[0126]當擠兌位的位數(shù)為η位時,按數(shù)值由小到大的順序確定擠兌位前η-1位的數(shù)值,根據(jù)用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和擠兌位前η-1位的數(shù)值,利用Luhn算法反演確定擠兌位第η位的數(shù)值,其中,η大于等于2,n為整數(shù)。
[0127]具體實施時,擠兌位確定模塊902具體用于:
[0128]當一位擠兌位為奇數(shù)位時,將擠兌位的數(shù)值和校驗位的數(shù)值交換,根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法反演確定奇數(shù)位擠兌位的數(shù)值;所述校驗位為用戶自選位的最后一位;
[0129]當一位擠兌位為偶數(shù)位時,將擠兌位的數(shù)值和校驗位的數(shù)值交換,根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法反演后再進行除2逆向計算,確定偶數(shù)位擠兌位的數(shù)值。
[0130]具體實施時,還包括:
[0131]查詢模塊905,用于查詢當前序號發(fā)生器序號;
[0132]擠兌位確定模塊902具體用于:
[0133]從當前序號發(fā)生器序號中相應的擠兌位的數(shù)值加I開始,按數(shù)值由小到大的順序確定擠兌位前η-1位的數(shù)值。
[0134]具體實施時,擠兌位確定模塊902具體用于:
[0135]根據(jù)用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和發(fā)卡地區(qū)碼,利用Luhn算法確定擠兌位的數(shù)值;
[0136]自選銀行卡號生成模塊903具體用于:
[0137]將擠兌位的數(shù)值、用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和發(fā)卡地區(qū)碼組合生成自選銀行卡號。
[0138]綜上所述,本發(fā)明提出的銀行卡號自選方法及裝置具有如下優(yōu)點:
[0139]1、本發(fā)明能夠有效的解決卡號自選功能,同時生成的卡號滿足LUHN算法校驗位規(guī)則;
[0140]2、本發(fā)明擠兌位的順序選擇可使生成的卡號滿足升序或降序規(guī)則;
[0141]3、本發(fā)明通過與序號發(fā)生器當前序號比對,能夠快速高效的生成滿足LUHN算法規(guī)則的卡號;再通過生成的卡號與數(shù)據(jù)庫的卡號進行比對查詢,排除重復數(shù)據(jù),防止重復發(fā)卡。
[0142]本領域內(nèi)的技術(shù)人員應明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
[0143]本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
[0144]這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
[0145]這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
[0146]以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領域的技術(shù)人員來說,本發(fā)明實施例可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
【主權(quán)項】
1.一種銀行卡號自選方法,其特征在于,包括: 確定用戶自選位的數(shù)值; 根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,確定擠兌位的數(shù)值;在銀行卡號中預設的可自選位中去除用戶自選位后剩余的為擠兌位,擠兌位位于用戶自選位之前; 將擠兌位的數(shù)值、用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼組合生成自選銀行卡號; 將生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行卡號進行比對,若生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行號碼相同,則重新確定用戶自選位的數(shù)值,若生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行號碼不同,則確定生成的自選銀行卡號可用。2.如權(quán)利要求1所述的銀行卡號自選方法,其特征在于,所述根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,確定擠兌位的數(shù)值,包括: 根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法確定擠兌位的數(shù)值。3.如權(quán)利要求2所述的銀行卡號自選方法,其特征在于,所述根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法確定擠兌位的數(shù)值,具體包括: 當擠兌位的位數(shù)為一位時,根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法反演確定一位擠兌位的數(shù)值; 當擠兌位的位數(shù)為η位時,按數(shù)值由小到大的順序確定擠兌位前n-1位的數(shù)值,根據(jù)用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和擠兌位前η-1位的數(shù)值,利用Luhn算法反演確定擠兌位第η位的數(shù)值,其中,η大于等于2,n為整數(shù)。4.如權(quán)利要求3所述的銀行卡號自選方法,其特征在于,所述當擠兌位的位數(shù)為一位時,根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法反演確定一位擠兌位的數(shù)值,具體包括: 當一位擠兌位為奇數(shù)位時,將擠兌位的數(shù)值和校驗位的數(shù)值交換,根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法反演確定奇數(shù)位擠兌位的數(shù)值;所述校驗位為用戶自選位的最后一位; 當一位擠兌位為偶數(shù)位時,將擠兌位的數(shù)值和校驗位的數(shù)值交換,根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法反演后再進行除2逆向計算,確定偶數(shù)位擠兌位的數(shù)值; 所述奇數(shù)位或偶數(shù)位按如下方式確定: 從用戶自選位的最后一位開始往前數(shù)。5.如權(quán)利要求3所述的銀行卡號自選方法,其特征在于,在確定擠兌位前η-1位的數(shù)值之前,還包括: 查詢當前序號發(fā)生器序號; 所述按數(shù)值由小到大的順序確定擠兌位前n-1位的數(shù)值,具體包括: 從當前序號發(fā)生器序號中相應的擠兌位的數(shù)值開始,按數(shù)值由小到大的順序確定擠兌位前η-1位的數(shù)值。6.如權(quán)利要求2所述的銀行卡號自選方法,其特征在于,所述根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,確定擠兌位的數(shù)值,具體包括: 根據(jù)用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和發(fā)卡地區(qū)碼,利用Luhn算法確定擠兌位的數(shù)值; 所述將擠兌位的數(shù)值、用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼組合生成自選銀行卡號,具體包括: 將擠兌位的數(shù)值、用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和發(fā)卡地區(qū)碼組合生成自選銀行卡號。7.一種銀行卡號自選裝置,其特征在于,包括: 自選位數(shù)值確定模塊,用于用戶自選位的數(shù)值; 擠兌位確定模塊,用于根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,確定擠兌位的數(shù)值;在銀行卡號中預設的可自選位中去除用戶自選位后剩余的為擠兌位,擠兌位位于用戶自選位之前; 自選銀行卡號生成模塊,用于將擠兌位的數(shù)值、用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼組合生成自選銀行卡號; 比對模塊,用于將生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行卡號進行比對,若生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行號碼相同,則重新確定用戶自選位的數(shù)值,若生成的自選銀行卡號與數(shù)據(jù)庫中已存的銀行號碼不同,則確定生成的自選銀行卡號可用。8.如權(quán)利要求7所述的銀行卡號自選裝置,其特征在于,所述擠兌位確定模塊具體用于: 根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法確定擠兌位的數(shù)值。9.如權(quán)利要求8所述的銀行卡號自選裝置,其特征在于,所述擠兌位確定模塊具體用于: 當擠兌位的位數(shù)為一位時,根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法反演確定一位擠兌位的數(shù)值; 當擠兌位的位數(shù)為η位時,按數(shù)值由小到大的順序確定擠兌位前n-1位的數(shù)值,根據(jù)用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和擠兌位前η-1位的數(shù)值,利用Luhn算法反演確定擠兌位第η位的數(shù)值,其中,η大于等于2,n為整數(shù)。10.如權(quán)利要求9所述的銀行卡號自選裝置,其特征在于,所述擠兌位確定模塊具體用于: 當一位擠兌位為奇數(shù)位時,將擠兌位的數(shù)值和校驗位的數(shù)值交換,根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法反演確定奇數(shù)位擠兌位的數(shù)值;所述校驗位為用戶自選位的最后一位; 當一位擠兌位為偶數(shù)位時,將擠兌位的數(shù)值和校驗位的數(shù)值交換,根據(jù)用戶自選位的數(shù)值和發(fā)卡機構(gòu)標識碼,利用Luhn算法反演后再進行除2逆向計算,確定偶數(shù)位擠兌位的數(shù)值; 所述奇數(shù)位或偶數(shù)位按如下方式確定: 從用戶自選位的最后一位開始往前數(shù)。11.如權(quán)利要求9所述的銀行卡號自選裝置,其特征在于,還包括: 查詢模塊,用于查詢當前序號發(fā)生器序號; 所述擠兌位確定模塊具體用于: 從當前序號發(fā)生器序號中相應的擠兌位的數(shù)值開始,按數(shù)值由小到大的順序確定擠兌位前η-1位的數(shù)值。12.如權(quán)利要求8所述的銀行卡號自選裝置,其特征在于,所述擠兌位確定模塊具體用于: 根據(jù)用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和發(fā)卡地區(qū)碼,利用Luhn算法確定擠兌位的數(shù)值; 所述自選銀行卡號生成模塊具體用于: 將擠兌位的數(shù)值、用戶自選位的數(shù)值、發(fā)卡機構(gòu)標識碼和發(fā)卡地區(qū)碼組合生成自選銀行卡號。
【文檔編號】G06Q40/02GK105956921SQ201610349091
【公開日】2016年9月21日
【申請日】2016年5月24日
【發(fā)明人】馮春陽, 楊厚德, 靳佳, 戴雪梅, 許海洋
【申請人】中國銀行股份有限公司