當前位置:
首頁 > 太空 > 數位驗證碼:你每天都在用的數學小魔法

數位驗證碼:你每天都在用的數學小魔法

在《數學家的辯護》一書中,哈代曾寫道:「數論是數學中最無用的分支之一。」他認為,正因為數論遠離日常生活,它才能保持純粹與優雅。然而,哈代的觀點在現代社會中顯然站不住腳。自他1947年去世以來,數論的應用已經滲透到我們生活的方方面面,從RSA加密演演算法到隨機數生成器,從錯誤校正到影象處理,甚至是蜂窩通訊網路的最佳化,數論的影子無處不在。

不過,數論還有一個更為低調但同樣重要的應用——你可能從未聽說過,卻每天都在使用它。這個應用就是「數位驗證碼」。如果你想親眼見證它的存在,只需走進你家附近的超市。

想像一下,你是一名佛羅裡達州的酒保,一個看起來剛滿投票年齡的年輕人遞給你他的駕照,並點了一杯古典雞尾酒。你心生懷疑,仔細檢查駕照上的資訊:生日是1月24日,駕照號碼的最後三位是162。你冷笑一聲,拒絕了他:「別裝了,年輕人,這張駕照是假的。去隔壁酒吧試試吧,他們的服務生可不懂什麼是數位驗證碼。」

你是如何識破這張假駕照的呢?根據康奈爾大學數學探索俱樂部的解釋,像伊利諾伊州和佛羅裡達州這樣的州份,在製作駕照號碼時有特定的規則。他們會根據你的姓名、性別和出生日期生成號碼,並在最後加上一個「數位驗證碼」。

那麼,什麼是數位驗證碼?顧名思義,它是一個(或多個)用來驗證前面數字的數字。它就像一個安全功能,但並非用於防止身份盜竊,而是為了避免你誤讀或誤寫數字。例如,將一個模糊的8誤認為3,或者不小心交換了兩個數字的位置。

以佛羅裡達州的駕照為例,發證機構會使用線性函式將出生月份和日期編碼成一個三位數,並將其作為駕照號碼的最後三位。對於男性,這個數字的計算公式是40×(月份−1)+日期;對於女性,則會在這個數字上再加500。因此,一個出生在1月24日的年輕男性,其駕照號碼的最後三位應該是024,而我們剛才提到的162則對應於5月2日出生的人——顯然,這張駕照是假的。

在當今這個被數字主宰的時代,數位驗證碼的應用無處不在。例如,書籍的國際標準書號(ISBN)就包含一個數位驗證碼。ISBN可以是10位或13位,取決於書籍的出版年份,而最後一位就是驗證碼。計算這個驗證碼的過程比佛羅裡達駕照的例子複雜得多:首先,將前12位數字交替乘以1和3,然後將這些加權乘積的總和除以10,再用10減去餘數,結果就是驗證碼。如果計算結果為10,則驗證碼為0。

除了書籍,許多商品也有通用產品程式碼(UPC),也就是你常見的條碼下方的數字串。這些看似隨機的數字中,也隱藏著數位驗證碼。例如,找到一個13位數的條碼,將奇數位的數字相加,再將偶數位的數字相加。將偶數位的總和乘以3,再加上奇數位的總和,最終的結果應該是10的倍數,也就是以0結尾。

信用卡也有數位驗證碼,這意味著網站可以在不聯絡銀行的情況下,判斷你是否輸入了錯誤的卡號。在英國,國民健康服務(NHS)號碼的最後一位也是驗證碼。計算方法是將前九位數字分別乘以10到2,然後將結果相加,再除以11,餘數就是驗證碼。

當然,數位驗證碼並非完美無缺。有些演演算法無法區分像1和00001這樣的序列,有些則能捕捉到錯誤的數字,卻無法發現交換位置的數字對。即使演演算法運作完美,也可能因為模10運算而偶然得出正確的結果。然而,總體來說,數位驗證碼是一個小技巧,卻能帶來巨大的回報。它可以幫你省去無數的麻煩,讓你在派對上展示一個極客的小把戲,或者讓一個佛羅裡達的年輕人度過一個難忘的夜晚。

而這一切,都要歸功於數論。哈代或許會感到懊惱,但數論的確是數學中的女王,永遠長存。