



下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第go語言實現(xiàn)銀行卡號Luhn校驗目錄一、銀行卡號碼的校驗規(guī)則二、生成符合Luhn規(guī)則的銀行卡號測試數據思路:整個代碼如下:
一、銀行卡號碼的校驗規(guī)則
銀行卡號碼的校驗采用Luhn算法,校驗過程大致如下:
1.從右到左給卡號字符串編號,最右邊第一位是1,最右邊第二位是2,最右邊第三位是3.
2.從右向左遍歷,對每一位字符t執(zhí)行第三個步驟,并將每一位的計算結果相加得到一個數s。
3.對每一位的計算規(guī)則:如果這一位是奇數位,則返回t本身,如果是偶數位,則先將t乘以2得到一個數n,如果n是一位數(小于10),直接返回n,否則將n的個位數和十位數相加返回。
4.如果s能夠整除10,則此號碼有效,否則號碼無效。
因為最終的結果會對10取余來判斷是否能夠整除10,所以又叫做模10算法。
二、生成符合Luhn規(guī)則的銀行卡號測試數據
前面既然摸清了銀行卡號的校驗規(guī)則,那么就可以根據此規(guī)則生成一些能夠通過Luhn校驗的測試數據。
思路:
因為最右邊的一位是奇數位,奇數位不需要改變值直接放啥就是啥,這個特性很重要,正好可以用來補齊到正好能夠整除10。
所以顯然能夠推測出生成n位符合Luhn規(guī)則的算法:
1.隨機生成n-1位字符,稱為字符串x。
2.先假設字符串x有n位(實際上最右邊一位缺失是n-1位,最后一位用0補上占位置),將x按照n位長度計算和s,
3.上一步得到字符串x的校驗和s,將s加上一個數字y,使得它正好可以整除10,這個y就是最右邊第一位應該放的數字。
4.x+y做字符串拼接運算,得到最終的n位符合Luhn規(guī)則的字符串。
整個代碼如下:
packagemain
import(
"fmt"
"math/rand"
"strconv"
"time"
funcmain(){
fmt.Println(checkCarNum("6226095711989751"))
cardNum:=genCardNum("622609",16)
fmt.Println(cardNum)
fmt.Println(checkCarNum(cardNum))
funccheckCarNum(cardNumstring)bool{
sum,err:=getCardNumSum(cardNum)
iferr!=nil{
returnfalse
returnsum%10==0
funcgetCardNumSum(cardNumstring)(int64,error){
sum:=int64(0)
length:=len(cardNum)
index:=length-1
for{
t,err:=strconv.ParseInt(string(cardNum[index]),10,64)
iferr!=nil{
return0,err
ifindex%2==0{
t=t*2
ift=10{
t=t%10+t/10
sum+=t
ifindex=0{
break
index--
returnsum,nil
funcgenCardNum(startWithstring,totalNumint)string{
result:=startWith
length:=len(result)
rand.New(rand.NewSource(time.Now().UnixNano()))
for{
result+=fmt.Sprintf("%d",rand.Intn(10))
iflength==totalNum-1{
break
length++
sum,_:=getCardNumSum(result+"0")
t:=10-sum%10
ift==10{
t=0
result+=fmt.Sprintf("%d",t)
returnr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)學文獻檢索執(zhí)業(yè)醫(yī)師考試試題及答案
- 2025-2030年中國插座行業(yè)市場運行分析及前景趨勢與投資發(fā)展研究報告
- 2025-2030年中國指標文件行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 2025-2030年中國拇僵硬治療行業(yè)市場現(xiàn)狀供需分析及投資評估規(guī)劃分析研究報告
- 行政管理??瓶荚囋囶}及答案下載
- 網絡教育對藥師考試的推動作用試題及答案
- 2025年行政管理與傳統(tǒng)文化的結合試題及答案
- 2025陜西氫能產業(yè)發(fā)展有限公司所屬單位招聘(101人)筆試參考題庫附帶答案詳解
- 行政管理備考的關鍵試題與答案指引
- 2025年蕪宣機場招聘地面服務貨運員10人筆試參考題庫附帶答案詳解
- 毛竹腳手架搭設施工方案
- 鄭州住宅小區(qū)調研
- 基礎會計練習題及答案
- 鞋廠制革企業(yè)安全風險分級管控和隱患排查治理雙體系方案資料(2022-2023新標準)
- 消防應急預案流程圖
- 2022年最新小升初英語試卷(含答案)
- 二環(huán)庚二烯(2,5-降冰片二烯)的理化性質及危險特性表
- “轉觀念、勇?lián)?、強管理、?chuàng)一流”對標工作整改方案
- 模具試模通知單
- 全科醫(yī)師培訓的全科門診主要內容教學
- 蘇州納米所綜合考試要點
評論
0/150
提交評論