檢查碼演算法
pii_text 以正則偵測信用卡與 IBAN 的*形狀*、data_quality 做型別/範圍/正則驗證,但沒有任何功能實際
計算或驗證*檢查碼*。本功能加入多數真實世界識別碼背後四種方案的共用運算引擎——也是帳號、卡號、IBAN、
ISBN、EAN 驗證所依據的基本元件。
純標準函式庫(整數運算;Verhoeff 與 Damm 表為小型內嵌常數)。每個函式皆為純函式(字串進、bool/str 出), 因此在 CI 中完全具決定性。
無頭 API
from je_auto_control import (
luhn_validate, luhn_check_digit,
verhoeff_validate, verhoeff_check_digit,
damm_validate, damm_check_digit,
mod97_10_validate, mod97_10_check_digits,
)
luhn_validate("4111111111111111") # True (信用卡 / IMEI)
luhn_check_digit("7992739871") # '3' -> 79927398713
verhoeff_validate("2363") # True (可抓出換位錯誤)
damm_check_digit("572") # '4'
mod97_10_validate("3214282912345698765432161182") # True (IBAN 引擎)
**Luhn**(mod 10):信用卡、IMEI、多種國民身分碼——可抓出所有單一數字錯誤與多數相鄰換位。
Verhoeff 與 Damm:十進位方案,可抓出*所有*單一數字與相鄰換位錯誤(比 Luhn 更強)。
ISO 7064 MOD 97-10:IBAN 等使用的雙檢查碼方案。
每個方案提供 *_validate(number)``(含檢查碼的值是否驗證通過?)與 ``*_check_digit / *_check_digits
(對裸負載應附加哪些檢查碼?)。非數字字元會被忽略,因此含空格/分組的輸入也適用。
執行器命令
AC_checksum_validate 接受 scheme``(``luhn / verhoeff / damm / mod97)與 number 並回傳
{valid};``AC_checksum_digit`` 對 partial 回傳 {check_digit}。兩者皆以 MCP 工具
(ac_checksum_validate / ac_checksum_digit)以及 Script Builder 中 Data 分類下的命令提供。