尾數校驗演算法
1. 請教。銀行卡的尾數最後面那位數是驗證碼
銀行卡的最後一位數字是校驗位,用於驗證銀行卡的有效性。誰要是轉賬時輸錯卡號能轉到其他人賬戶,這運氣和RP無法形容了。還有一些人在同一櫃員處連著開卡,發現銀行卡不是連號,以為是工作人員隨機拿的卡,其實把最後一位校驗數字忽略是連號的。銀行卡用的是Luhn檢驗數字演算法,也叫做模數10公式,是一種簡單的演算法銀行卡校驗過程1、從卡號最後一位數字開始,逆向將奇數位相加。2、從卡號最後一位數字開始,逆向將偶數位數字,先乘以2(如果乘積為兩位數,則將其減去9),再求和。3、將奇數位總和加上偶數位總和,結果應該可以被10整除。例如,卡號是:5432123456788881則奇數、偶數位(紅色數字)分布:5432123456788881奇數位數字是 4 2 2 4 6 8 8 1 求和=35偶數位乘以2(乘積為兩位數要減去9)的結果:1 6 2 6 1 5 7 7,再求和=35。最後35+35=70可以被10整除,認定校驗通過
2. 身份證的尾數怎麼計算
身份證的尾數的計算方法為:
1、將前面的身份證號碼17位數分別乘以不同的系數。從第一位到第十七位的系數分別為:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
2、將這17位數字和系數相乘的結果相加。
3、用加出來和除以11,看余數是多少。
4、余數只可能有0-1-2-3-4-5-6-7-8-9-10這11個數字。其分別對應的最後一位身份證的號碼為1-0-X -9-8-7-6-5-4-3-2。(即余數0對應1,余數1對應0,余數2對應X...)
5、通過上面得知如果余數是3,就會在身份證的第18位數字上出現的是9。如果對應的數字是2,身份證的最後一位號碼就是羅馬數字X。
例如:某男性的身份證號碼為(53010219200508011X), 我們看看這個身份證是不是合法的身份證。
首先我們得出前17位的乘積和【(5*7)+(3*9)+(0*10)+(1*5)+(0*8)+(2*4)+(1*2)+(9*1)+(2*6)+(0*3)+(0*7)+(5*9)+(0*10)+(8*5)+(0*8)+(1*4)+(1*2)】是189,
然後用189除以11得出的結果是189/11=17----2,也就是說其餘數是2。
最後通過對應規則就可以知道余數2對應的檢驗碼是X。所以,可以判定這是一個正確的身份證號碼。
(2)尾數校驗演算法擴展閱讀:
身份證最後一位校驗碼
根據前面十七位數字碼,按照ISO 7064:1983.MOD 11-2校驗碼計算出來的檢驗碼。
作為尾號的校驗碼,是由號碼編制單位按統一的公式計算出來的,如果某人的尾號是0-9,都不會出現X,但如果尾號是10,那麼就得用X來代替,
因為如果用10做尾號,那麼此人的身份證就變成了19位,而19位的號碼違反了國家標准,並且中國的計算機應用系統也不承認19位的身份證號碼。Ⅹ是羅馬數字的10,用X來代替10,可以保證公民的身份證符合國家標准。
3. 通過excle使用luhn演算法計算銀行卡最後一個校驗數字 一個銀行卡號是19位,前面18位是有簡
1、
用mid()計算第二位
=(MID(A1,2,1)*2>9)*(MID(A1,2,1)*2-9)+(MID(A1,2,1)*2<10)*MID(A1,2,1)*2
用mid()計算第四位
=(MID(A1,4,1)*2>9)*(MID(A1,4,1)*2-9)+(MID(A1,4,1)*2<10)*MID(A1,4,1)*2
.........
用mid()計算第一位(奇數位之和)
=(MID(A1,1,1)+(MID(A1,3,1)+(MID(A1,5,1)+。。。。。
2、將上述公式相加
如果取尾數:
=right(結果,1)
3、如果信用卡號碼是合法的,總和可以被10整除。
校驗位:總和尾數與10的補數(如為10,則為0)
=(right(結果,1)>0)*(10-right(結果,1))
4、公式太長,建議:分多個輔助單元格,再將結果相加,最後用right()處理。
4. 身份證號碼的最後一位校驗碼是怎麼計算出來的
先將身份證前面的17位數分別乘以不同的系數,然後將每一個相乘的結果相加,用所得之和除以11,看余數是多少,余數是0--9尾數就是0-9,如果余數是10,那麼身份證的第18位數字就用羅馬數字的【χ代替】。
因為是10的話就有19位數字了,與身份證號碼十八位數的國家標准不相符合。因為是10的話就有19位數字了,與身份證號碼十八位數的國家標准不相符合。
X:英語中第24個字母。X 表示未知、無限,X 還有「目標」和「希望」,X 在社會學界表示「完美」,千言萬語都可以用 X 來傳遞。數學中 X 在方程中通常表示未知數的值。在羅馬數字中,X 表示十。
(4)尾數校驗演算法擴展閱讀:
身份證號碼18位數字其表示的含義分別為:
第1、2位, 所在省份的代碼;
第3、4位 :所在城市的代碼;
第5、6位:所在區縣的代碼;
第7——14位 :出生年、月、日
(7、8、9、10位是年,11、12位是月,13、14位是日);
第15、16位 :所在地派出所的代碼;
第17位 :奇數1、3、5、7、9表示男性,偶數2、4、6、8表示女性;
第18位:校檢碼:為0——9數字,或者羅馬數字χ表示。
5. 18位身份證號最後一位(檢驗碼)是怎麼算出來的
公民身份號碼是特徵組合碼,由十七位數字本體碼和一位校驗碼組成。排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位校驗碼,可以用字母表示如為ABCDEFYYYYMMDDXXXR。其含義如下:
1. 地址碼(ABCDEF):表示編碼對象常住戶口所在縣(市、旗、區)的行政區劃代碼,按GB/T2260的規定執行。
2. 出生日期碼(YYYYMMDD):表示編碼對象出生的年、月、日,按GB/T7408的規定執行,年、月、日分別用4位、2位(不足兩位加0)、2(同上)位數字表示,之間不用分隔符。
3. 順序碼(XXX):表示在同一地址碼所標識的區域范圍內,對同年、同月、同日出生的人編定的順序號,順序碼的奇數分配給男性,偶數分配給女性。
4.校驗碼(R),一位數字,通過前17位數字根據一定計算得出。
三、關於地址碼含義的詳細解釋:
身份證前六位是地區代碼,我們用ABCDEF表示。 代碼的解釋規則如下:
A:國內區域
1 華北三省二市
2 東北三省
3 華東六省一市
4 華南六省
5 西南四省一市
6 西北五省
7 台灣
8 港澳
B(或者說是AB,就是前2位):省(直轄市,自治區,特別行政區)代碼
按照A劃定的分區定義省代碼,有直轄市的,直轄市列前,其餘按離直轄市的距離排序,沒有直轄市的,按離北京的遠近排序。
具體省(直轄市,自治區,特別行政區)代碼如下:
11-15 京 津冀 晉 蒙
21-23 遼 吉黑
31-37 滬 蘇浙 皖 閩 贛 魯
41-46 豫 鄂湘 粵 桂 瓊
50-54 渝 川貴 雲 藏
61-65 陝 甘青 寧 新
81-82 港 澳
CD:城市代碼
從01開始排,對於直轄市,CD=01表示市轄區,CD=02表示轄縣;省的城市代碼從省會開始排,比如2101=沈陽 2102=大連…… 只有地級城市有獨立的城市代碼,縣級市沒有。
EF:市轄區、郊區、郊縣、縣級市代碼
如果EF=00,指代這個城市,不特定區縣;對於非直轄市,如EF=01,指代市轄區(任意一個區),02開始指代特定的區。
其中:
E=0代表市轄區,
E=1代表郊區,
E=2代表郊縣,
E=8代表縣級市。
對於直轄市,從01開始就依次排區,沒有市區和郊區的代碼區分。:
有關更詳細的資料見附錄。
四、生日期碼(YYYYMMDD)表示編碼對象出生的年、月、日,其中年份用四位數字表示,年、月、日之間不用分隔符。例如:1981年05月11日就用19810511表示。
五、順序碼(XXX)(身份證第十五位到十七位)是縣、區級政府所轄派出所的分配碼,每個派出所分配碼為10個連續號碼,例如「000-009」或「060-069」,其中單數為男性分配碼,雙數為女性分配碼,如遇同年同月同日有兩人以上時順延第二、第三、第四、第五個分配碼。如:007的就是個男生,而且和他同年月日生的男生至少有兩個,他們的後四位是001*和003*。分配順序碼中「999、998、997、996」四個順序號分別為男女性百歲以上老人專用的特定編號。
六、關於校驗碼
校驗碼是通過一系列數學計算得出來的,具體校驗的計算方式如下:
1. 對前17位數字本體碼加權求和
公式為:S = Sum(Ai * Wi), i = 0, ... , 16
其中Ai表示第i位置上的身份證號碼數字值,Wi表示第i位置上的加權因子,其各位對應的值依次為: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
通俗解釋:身份證第一位數字X7+第二位X9+第三位X10+第四位X5+第五位X5+第六位X8+第七位X4+第八位X1+第九位X6+第十位X3+十一位X7+十二位X9+十三位X10+十四位X5+十五位X8+十六位X4+十七位X2;計算出總和(用S)表示。
2. 以11對計算結果取模
Y = mod(S, 11)
通俗解釋:用S除以11,看最後的余數。如果除盡,為0;余數為1,則計為1;最大余數為10;全部數字為0-10共11個數字。(用Y表示)。
3. 根據模的值得到對應的校驗碼
對應關系為:
Y值: 0 1 2 3 4 5 6 7 8 9 10
校驗碼: 1 0 X 9 8 7 6 5 4 3 2
通俗解釋:余數為0,則校驗碼為1;依次類推:余數為1,則校驗碼對應0;以下:2--X;3--9;4--8;5--7;6--6;7--5;8--4;9-3;10-2。
如果校驗碼不符合這個規則,則肯定是假號碼。
關於18位身份證號碼尾數是「X」的一種解釋:因為按照上面的規則,校驗碼有11個,而不是10個,所以不能用0-9表示。所以如果尾號是10,那麼就得用X來代替,因為如果用10做尾號,那麼此人的身份證就變成了19位,而19位的號碼違反了國家標准,並且我國的計算機應用系統也不承認19位的身份證號碼。Ⅹ是羅馬數字的10,用X來代替10,可以保證公民的身份證符合國家標准。
根據〖中華人民共和國國家標准 GB 11643-1999〗中有關公民身份號碼的規定,公民身份號碼是特徵組合碼,由十七位數字本體碼和一位數字校驗碼組成。排列順序從左至右依次為:六位數字地址碼,八位數字出生日期碼,三位數字順序碼和一位數字校驗碼。
6. 身份證的最後一位為什麼會有X
因為如果用10作為尾號,那麼這個人的身份證就會變成19位數字,這19位數字違反了國家標准,中國的計算機應用系統不會識別出這19位數字的身份證號碼。居民身份證號碼按國家標准編制,由18位數字組成:前6位為行政區劃代碼,第7至14位為出生日期代碼,第15至17位為序列碼,第18位為校驗碼。
只要你在網上輸入身份證號碼,你就可以說關於這個人的所有信息都可以找到。因此,身份證號碼是人們最費力記住的東西。然而,有一件事讓人好奇。最後一個身份證號碼有一個代表號碼的「X」。這是什麼意思?是因為這個人有什麼特殊地位嗎?讀完下面的文章,你可能會知道發生了什麼。許多人仍然不確定。
7. 身份證號最後一位數字稱之為校驗碼,校驗碼的計算方式是怎樣的
按照相關規定,身份號是由17個數字和1個數字校驗碼組成的。而最後一位校驗碼,就是檢查身份證是否正確的主要依據。它的計算方法,主要是由前17位乘以不同的系數,最後的總和除以11。在這種情況下,得到的余數,就是校驗碼。
那麼我們在反推的時候,就可以用身份證號乘於系數,當最後得出的余數和末尾校驗碼不同時,就代表這個身份證,是一個假的身份證,不符合我們國家的標准。另外,余數對應的數字不同,並不是說余數就一定是最後一位身份證號碼。
3、為什麼除以11看到整個計算過程,我們會發現,想要得出校驗碼,並非一件易事。不過在計算中,有人可能會提出疑問,最終的除以為什麼是取11,而不是其他數字。
其實這個問題的答案很簡單,結合校驗碼的功能,11是最容易檢測出問題的存在。同時,它可以覆蓋到大多數身份證,方便進行校驗。畢竟一個國家人口眾多,校驗碼要做到盡可能覆蓋所有人。
8. 不同的銀行卡號尾數有可能一樣嗎
完全可能;銀行卡的尾號(尾數)是銀行卡的校驗位,它是根據約定的一種演算法產生,范圍是0-9,因此不同銀行卡的尾數一樣是高概率的事。
9. 身份證尾數號怎麼算
身份證尾號屬於校驗碼,是可以根據身份證前17位推算出來的。你可以到通查網站的「身份證尾號補全與校驗」產品免費查詢,只要輸入身份證號碼就可以返回其所在地,如圖
10. 身份證號碼末位數的計算方法。
根據GB11643—1999《公民身份證號碼》的規定,身份證中第十八位數字的計算方法為:
1.將前面的身份證號碼17位數分別乘以不同的系數。從第一位到第十七位的系數分別為:7. 9 .10 .5. 8. 4. 2. 1. 6. 3. 7. 9. 10. 5. 8. 4. 2.
2.將這17位數字和系數相乘的結果相加。
3.用加出來和除以11,看余數是多少;
4餘數只可能有0 、1、 2、 3、 4、 5、 6、 7、 8、 9、 10這11個數字。其分別對應的最後一位身份證的號碼為1 .0. X. 9. 8. 7. 6. 5. 4. 3. 2.。
5.通過上面得知如果余數是2,就會在身份證的第18位數字上出現羅馬數字的Ⅹ。如果余數是10,身份證的最後一位號碼就是2。