董 潔 呂朝暉 李 婷
(沈陽建筑大學信息與控制工程學院 遼寧 110168 )
隨著信息技術和產業的急速發展,信息安全問題也隨之日益凸顯,信息安全問題關乎國家及社會的安全,尋找解決措施不可怠慢。自研發以來,DES成為了眾多領域的可靠通信的安全保障。無論是全球的貿易、金融部門,還是用戶的識別、文件保護都有DES深刻的影響。
DES(Data Encrypti on Standard),上個世紀70年代由IBM開發的單密鑰對稱加解密算法的一個典范,并在1997年被美國政府正式的采納。DES算法是一種強算法,到目前為止,除了使用窮舉法搜索其密匙空間尋找破譯密碼外,沒有更有效的辦法。[1]
DES加密的整個過程可分為四個重要的階段:初始置換、子密鑰的生成、f函數運算、最終逆置換。[2]
將加密的數據分割成以若干個以64位為單位的數據(如果位數不夠用00或FF補足),按照8行8列進行排列,使用固定的IP置換表對64位的二進制明文塊進行重新排列,置換完畢的明文塊被分為兩個半區L0(前32位)、R0(后32位)。
子密鑰的生成主要是通過置換和移位產生的,原始密鑰由用戶提供,是DES算法的輸入之一,是一個64位的二進制塊。但DES算法中8的整數倍位置的數為奇偶校驗位,不參與運算,用密鑰置換表進行置換、去掉奇偶校驗位后,將56位的密鑰分成兩部分,前后各為28位。將這兩部分進行16次循環左移位,每一次移位以后得到的新的56位子密鑰作為下一次移位的有效密鑰,完成16次移位后使用密鑰選擇表壓縮置換,總計得到16個48位的子密鑰。
完成前述加密原文以及密鑰的準備后,需要進行f函數的加密運算,公式如下:

從公式可以看出加密運算的關鍵在于Ri:取初始置換后明文塊的后半區R,在運算前首先要對該32位的數據進行擴充,即重復部分位置的數據將其擴充為48位。
擴充后的數據與48位的子密鑰的對應位ki進行異或運算,異或運算后的結果被分為8個6位的二進制塊輸入到代換函數S中進行代換。
代換函數S(S盒)的原理是將被分割成6位的二進制塊的第一位和最后一位合并成一個2位的二進制塊,換算為十進制后作為S盒的行數,中間4位換算為S盒的列數。再將S盒中確定的數字轉換為4位的二進制數。代換后的結果再經過換位表進行置換。[3]8個6位的二進制塊對應不同的S盒,數值各不相同。完成f函數運算后的Ri,與Li進行異或運算,并交換位置進行16次的迭代。
迭代16次后的最終結果R16,L16,按照表1所示逆置換表進行位置轉換:首位數據對應原第40位的,第二位數據對應原第8位的…,即IP-1置換,便完成了加密過程。

表1 IP-1逆置換表
DES算法運用了置換、替代、代數等多種密碼技術,算法結構緊湊,條理清楚,而且加密與解密算法類似,這些特點都便于將DES算法在程中實現。在C#中提供了ESCryptoServiceProvider類用于實現DES加密及解密的過程。用C#進行DES加密的關鍵代碼如下:


在數據庫的應用中,如果用戶的密碼以明碼的方式存儲在數據表中容易造成安全的隱患,為此可以采用DES算法對其進行了加密處理,加密前后結果如表2所示。

表2 加密結果

ZXCVBN D 1490677E2BC464F 123456 24179C578C1D8219
如今,信息已經成為一種重要的戰略資源,為防止信息泄密,對關鍵信息進行加密很有必要。DES 是世界上第一個公認的實用密碼算法標準,盡管人們在破譯 DES 方面取得了許多進展,但至今仍未能找到比窮舉搜索密鑰更有效的方法,,但為了保障安全性,也不適合在網絡環境下單獨使用。現今DES的安全性完全在于對密鑰加以保護,必須有可靠的信道來分發密鑰。
[1]周明全 等.網絡信息安全技術(第2版)[M].西安電子科技大學出版社,2010:55-57.
[2]解雙建,原 亮,謝方方.DES 算法原理及其 FPGA 實現[J].計算機技術與發展.2011(7):158-161.
[3]管瑩,敬茂華 .DES算法原理及實現[J].電腦編程技術與維護.2009(2):5-8.