1. 程式人生 > >區塊鏈的加密演算法__一,從維吉尼亞到RSA(未完待續)

區塊鏈的加密演算法__一,從維吉尼亞到RSA(未完待續)

密碼學源於數學。處於一些特殊的需要,自從數學有所發展的時候,就有了加密者與解密者。

一開始的密碼學加密法都是對稱加密法,這種情況一直到上個世紀中葉RSA加密法誕生。如今區塊鏈所使用的各種各樣的加密法都為不對稱加密,而最早的不對稱加密法就是RSA加密法,是它開啟了公鑰密碼學的新時代,以及如今的區塊鏈技術革命。本文主要寫的是區塊鏈加密法,但寫此之前還要從維吉尼亞講起。

維吉尼亞加密法屬於對稱加密法,所謂的“對稱加密法”就是加密解密的金鑰都是同一個的。而維吉尼亞加密法在過去的幾個世紀裡一度被認為是“不可破解的加密法”,從加密演算法來看維吉尼亞實際上是從凱撒加密法演變而來的,凱撒加密法採用一個int型別的資料作為金鑰,而維吉尼亞則是使用一個長度不限的字串,多為string型別(或者是char陣列)作為金鑰。現在這裡的金鑰設定為njust,而被加密的句子是‘a friend in need is a friend indeed’。維吉尼亞的加密演算法示意圖如下:

a   f   r   i   e   n   d   i   n   n   e   e   d   i    s   a   f   r    i   e   n   d   i    n   i   n   d   e   e   d

n   j   u  s   t   n    j   u   s   t    n   j    u   s   t    n   j   u   s   t   n    j   u   s   t   n    j    u   s   t

除去空格後將上下兩行對應字母進行對應加密運算(這裡直接將字母對應的數字相加,採用凱撒加密法的機制,其中a至z分別對應0至25,不區分大小寫)。

但不要想著用破解凱撒加密法的方式去破解維吉尼亞,因為金鑰每增加一個字母那可能的金鑰數目將乘以26(而且這是隻有英文字母,且在不區分大小寫的情況下)。一旦金鑰長度足夠長,若使用先前用於破解凱撒加密法的暴力破解的話,計算機將花費數年時間。而在維吉尼亞問世的幾個世紀後終於有人找到破解維吉尼亞的客觀方法———這個人是大名鼎鼎的巴貝奇,於是破譯方法被命名為“巴貝奇攻擊”。“巴貝奇攻擊”主要思想是運用概率分析:首先,分析了牛津詞典上的所有英文單詞,記錄每個字母在單詞上的出現頻率,即一個字母出現在一個單詞裡時就對應加一,最後統計所有的字母出現次數,並從高到低降序排列,得到的結果是:etaoinshrdlcumwfgypbvkjxqz,用前六個字母簡記為“ETAOIN”。接著分析密文的各個字母出現頻率並同樣進行降序排列,並與“ETAOIN”對應起來。並分析密文裡經常出現的字母序列,應為這些字母序列對應著相同的英文單詞。列出這些經常出現的密文序列,並用之前所對應的序列進行嘗試。注意,這種方法一般是密文較長的時候才進行使用,因為密文較短時金鑰也會很短,頻率分析對較短的密文並不起效,此時還是使用用於破解凱撒的那套暴力法較為明智。於是曾經號稱“不可破解”的維吉尼亞也被證明是一種 “不可靠的加密”,不僅如此,至此整個“對稱加密法”都已功虧一簣。於是,一種看似更安全的,稱為RSA的加密法出現了,公鑰密碼學的發展也隨之開始了。(未完待續)