之前筆者曾經提過是「卡迷」,從小對邀請卡、會員卡、信用卡之類的物件非常著迷,非常愛收集。要有重量、要會閃亮的卡片、卡,都是魔法~
配圖:DALL·E 3 幫忙設計的,AI好幫手~
「模10」(Mod 10)算法,以下坐穩,很暈,是數學!數學來了,盧恩算法(英語:Luhn algorithm),是一種用來檢查數字序列的校驗碼。
當初學到這玩意,筆者整個嗨翻,整個思維像是007拿一個黑色密碼解鎖器開瑞銀大門,但是很難,學了很久試了幾次,從來沒有完整算對過,好像回到國中學測想考資優班的考題一樣無奈。
維基百科裡面有,但是好難,收尋:「盧恩算法(英語:Luhn algorithm)」
目前筆者和AI一起努力寫了一個驗證的步驟,有錯的話麻煩來信教我改,暫定如下:
1. 從右至左,將卡號的每個數字依序乘以 1 或 2,偶數位乘以 2,奇數位乘以 1。例如,卡號 5412-3456-7890-1232 的乘積序列為 10 8 2 4 6 10 10 12 14 18 16 18 2 4 2 4。
2. 將每個乘積的個位數和十位數相加,如果乘積小於 10,則不變。例如,上述的乘積序列相加後為 1 8 2 4 6 1 1 3 5 9 7 9 2 4 2 4。
3. 將所有相加後的數字再加總,得到一個總和。例如,上述的相加序列加總為 58。
4. 如果總和能被 10 整除,則卡號為合法,否則為非法。例如,上述的總和 58 不能被 10 整除,所以卡號 5412-3456-7890-1232 為非法。
這個算法的原理是利用模 10 的運算,來檢查卡號的最後一位數字是否符合前面的數字。這個數字叫做校驗碼,是由發卡機構用一個密鑰將卡號的其他數字加密而得到的。這樣可以防止卡號被隨意修改或偽造。
參考資料:
維基百科、其他新聞專欄等
其他新聞專欄
專業資料收集與翻譯,輔助使用Copilot、Bing、ChatGPT
Comments