正文 第12章 趣談“算術”(2)(1 / 2)

編製密碼——質數的巨大功用

2000年前,歐幾裏得證明了素數有無窮多個。既然有無窮個,那麼是否有一個通項公式?兩千年來,數論學的一個重要任務,就是尋找一個可以表示全體素數的素數普遍公式和孿生素數普遍公式,為此,人類耗費了巨大的心血。希爾伯特認為,如果有了素數統一的素數普遍公式,那麼哥德巴赫猜想和孿生素數猜想都可以得到解決。

孤獨失落的兄弟——質數

質數又叫素數。是指一個隻能被1和它本身整除的數,它是一個在數論中占重要研究地位的數。孿生質數指的是間隔為2的相鄰質數,比如“3和5”“5和7”,他們孤獨而失落,雖然接近,卻不能真正觸到對方。

質數與編製密碼

11111這個數很容易記住。如果在需要設置密碼時,選用11111,別人不知道,自己忘不掉,可以考慮。但是,萬一被別人記住這個密碼,怎麼辦呢?這時你可以采用雙重加密。通常看見11111這個數,從它由5個1組成,容易聯想到“五一勞動節”、“五個指頭一把抓”、“我愛五指山,我愛萬泉河”,等等。但是一般不太容易想到把它分解質因數。這個數可以分解成兩個質因數的乘積:11111=41×271。

這兩個質因數都比較大,不是一眼就能看得出來的。把兩個質因數連寫,成為41271,作為第二層次的密碼,可以再加一道密,爭取一些時間,以便采取補救措施。

密碼容易被破解怎麼辦

如果擔心破解密碼的人也會想到分解質因數,可以加大分解的難度。把兩個質因數取得大些,分解起來就會困難得多。例如,從質數表上可以查到,8861和9973都是質數。把它們相乘,得到8861×9973=88370753。

把乘積88370753作為第一密碼,構成第一道防線;把兩個質因數連寫,成為88619973,作為第二密碼,這第二道防線就不是一般小偷能破解的了。即使想到嚐試把88370753分解質因數,即使利用電子計算器幫助做除法,如果手頭沒有詳細的質數表,逐個試除下去,等不及試除到1000,就可能喪失信心,半途而廢。

質因數這麼大,萬一自己忘記了密碼,自己也同樣破解不出,那不是自找麻煩嗎?

這一點在編製密碼時就要早作安排。選取上麵這兩個大質數8861和9973,已經預先定下錦囊妙計:隻要用諧音的辦法,把它們讀成“爸爸留意,舅舅漆傘”,就能牢牢記住了。

用以上這套簡單辦法,每個人都很容易編出隻有自己知道的雙重密碼。

如果利用電子計算機,把一個不很大的數分解成質因數的乘積,是很容易的。但是如果這個數太大,計算量超出通常微機的能力範圍,就是電腦也望塵莫及了。

“魔咒是神經質的禿鷹”

1977年,曾經有三位科學家和電腦專家設計了一個世界上最難破解的密碼鎖,他們估計人類要想解開他們的密碼,需要40個1千萬萬年。他們這樣做,是要向政府和商界表明,利用長長的數學密碼,可以保護儲存在電腦數據庫裏的絕密資料,例如可口可樂配方、核武器方程式等。

他們編製密碼的原則,基本上就是上麵介紹的分解質因數的辦法,不過他們的數取得很大不是五位數11111或八位數88370753,而是一個127位的數,使當時的任何電腦都望洋興歎。

當然,編製密碼鎖的三位專家裏夫斯特、沙美爾和艾德爾曼沒有想到,科學會發展得這樣快。僅僅過了17年,經過世界五大洲600位專家利用1600部電腦,並且借助電腦網絡,埋頭苦幹8個月,終於攻克了這個號稱千億年難破的超級密碼鎖。結果發現,藏在密碼鎖下的是這樣一句話:“魔咒是神經質的禿鷹。”