利用彙編語言實現DES加密算法

2021-01-18 電子產品世界

DES算法是一種數據加密算法。自從1977年公布以來,一直是國際上的商用保密通信和計算機通信的最常用的加密標準。DES算法的實現一般用高級語言。

關鍵詞:加密算法 DES 彙編語言

目前在金融界及非金融界的保密通信中,越來越多地用到了DES算法。DES(Data Encryption Standard)即數據加密算法,是IBM公司於 1977年研究成功並公開發表的。隨著我國三金工程尤其是金卡工程的啟動,DES算法在POS、ATM、磁卡及智慧卡(IC卡)中被廣泛應用,以此來實現關鍵數據的保密。如信用卡持卡人的PIN的加密傳輸、IC卡與POS間的雙向認證、金融交易中的密碼鍵盤等,均用到DES算法。由於密碼鍵盤不可能使用高級語言,所以用彙編語言實現DES就非常實用。

1 DES算法的簡單原理

  DES是一種分組密碼。假定明文m是由0和1組成的長度為64位的符號串,密鑰k也是64位的0、1符號串。

設:M=m1m2m3…m64

   K=k1k2k3…k64

加密過程可表達如下:

DES(m)=IP-1·T16·T15…T2·T1·IP(m)

其中:IP(m)是初始置換,IP-1是逆置換,T16~T1是16次迭代。

(1)初始置換IP

  功能是把輸入的明文m按位重新組合,並把輸出分為L0、R0兩部分,每部分各長32位,其置換規則如下:

58,50,42,34,26,18,10,2,

60,52,44,36,28,20,12,4,

62,54,46,38,30,22,14,6,

64,56,48,40,32,24,16,8,

57,49,41,33,25,17,9 ,1,

59,51,43,35,27,19,11,3,

61,53,45,37,29,21,13,5,

63,55,47,39,31,23,15,7

(2)逆置換IP-1

  經過16次迭代運算後,得到L16、R16,將此作為輸入,進行逆置換。逆置換滿足:

IP·IP-1=IP-1·IP=I

逆置換正好是初始置換的逆運算。

(3)T16~T1的迭代計算

  DES的迭代算法採用模2加法。

  在通信網絡的兩端,雙方約定了一致的密鑰。在通信的源點用密鑰對核心數據進行加密並形成密文,然後,以密文的形式在公共通信網中傳輸到通信網絡的終點。數據到達終點後,用同樣的密鑰對密文數據進行解密,便再現了明文形式的核心數據。這樣,便保證了核心數據(如PIN、MAC等)在公共通信網中傳輸的安全性和可靠性。

2 彙編語言的實現

  用彙編語言實現DES算法有它的優勢也有它的難點。優勢是51彙編的位操作可以方便地實現置換功能。但用彙編語言實現算法的迭代運算及循環功能比較煩瑣。在用51彙編實現DES的過程中,我編寫了幾個子程序,組合起來可實現DES算法加密。在這裡寫出一些思路,有需要的同行可與我聯繫(E-mail:zhoubin@jlu.edu.cn)。

  8031有16個可以位尋址的寄存器,可放置128位的數據,利用它可實現DES的轉置功能。將明文m放入寄存器27H~20H中,即位地址00H對應m64 ,3FH對應m1。利用標誌寄存器C可實現置換與逆置換程序。在DES的16次迭代過程中,要實現公式:

Li=Ri-1;Ri=Li-1f(Ri-1,ki)

的運算過程,其關鍵在於f(Ri-1,ki)的功能。f是將32位的輸入轉化為32位的輸出。其中含3項技術:

  ① 將32位膨脹為48位的E功能。該項功能可用類似於置換功能的子程序編寫。

  ② 48位子密鑰的生成。為了便於51彙編生成子密鑰,可以使用主機用串口下傳的方式,由主機將16個子密鑰傳給89C52為核心的單片機,然後存入80H~FFH中。如果密鑰是固定的,則可直接將子密鑰固化在89C52的Flash中。

  ③ S盒的功能是將48位的輸入再次縮為32位。具體實現是將S盒表存入89C52的Flash中,每次通過查表求得S輸出的結果。

下面列舉其中的幾個子程序。

(1)IP置換子程序

;入口寄存器:(MSB)2726252423222120(LSB),出口寄存器:(MSB)2F2E2D2C2B2A2928(LSB)

;功能:將入口寄存器的數據按置換表換位。

IP: MOV C,06H ;將m58送到進位標誌中

MOV 7FH,C ;將進位標誌送m1中

MOV C,0EH ;將m50送到進位標誌中

MOV 7EH,C ;將進位標誌送m2中

;重複,按表編寫

.

.

.

MOV C,31H ;將m15送到進位標誌中

MOV 41H,C ;將進位標誌送m63中

MOV C,39H ;將m7送到進位標誌中

MOV 40H,C ;將進位標誌送m64中

RET


相關焦點

  • 數據加密中的DES加密算法詳解
    [摘要] 本文詳細介紹了DES數據加密算法的原理,並給出了一個例子演示了如何使用c#中的加密包進行DES算法加密,最後對DES進行了評價。常用加密算法主要用來對敏感數據、摘要、籤名等信息進行加密。按照密鑰方式劃分,可分為對稱加密算法和非對稱加密算法。一、對稱加密算法對稱加密算法有時又叫做傳統密碼算法,加密密鑰可以從解密密鑰中推導出來,解密密鑰也可以從加密密鑰中推導出來。在大多數的對稱算法中,加密密鑰和解密密鑰是相同的,因此也成為秘密密鑰算法或者單密鑰算法。
  • 用AVR彙編語言實現AES及其優化
    摘要 AES是美國高級加密標準算法,將在未來幾十年裡代替DES在各個領域中得到廣泛應用。本文在研究分析AES加密算法原理的基礎上,著重說明算法的實現步驟,並結合AVR彙編語言完整地實現AES加密和解密。
  • 到底什麼是DES加密算法?這樣理解試試!
    在說DES加密算法之前,我們首先了解幾個基本概念:明文:明文是指沒有經過加密的數據。一般而言,明文都是等待傳輸的數據。由於沒有經過加密,明文很容易被識別與破解,因此在傳輸明文之前必須進行加密處理。密文:密文只是明文經過某種加密算法而得到的數據,通常密文的形式複雜難以識別及理解。
  • 常見加密算法DES、AES和RSA的原理和特點
    本文轉載自【微信公眾號:strongerHuang,ID:strongerHuang】經微信公眾號授權轉載,如需轉載與原文作者聯繫主要總結下常用的對稱性加密算法DES和AES,非對稱性加密算法RSA。1DES加密算法1.DES含義DES全稱為Data Encryption Standard,即數據加密標準,是一種使用密鑰加密的塊算法,1977年被美國聯邦政府的國家標準局確定為聯邦資料處理標準(FIPS),並授權在非密級政府通信中使用,隨後該算法在國際上廣泛流傳開來。DES是對稱性加密裡常見的一種,是一種使用秘鑰加密的塊算法。
  • 區塊鏈中的密碼學系列之對稱加密算法DES(六)
    前言DES是一種數據加密標準( Data Encryption Standard) , 有30多年歷史,是一種對稱密碼算法,是第一個得到廣泛應用的密碼算法,是一種分組加密算法,輸入的明文為64位,密鑰為64位(實際上只有56位,原因是每隔7個比特設置一個奇偶校驗位),生成的密文分組長度為64位。但是現在已經不再安全。課件來自我們老師上課的PPT。2.
  • 基於AES算法實現對數據的加密
    對稱密碼體制是較傳統的加密體制,主要用於保證數據的機密性,通信雙方在加密/解密過程中使用其共享的單一密鑰,由於其算法實現簡單和加密速度快等優點,目前仍然是主流密碼體制之一。對稱密碼體制分為序列密碼和分組密碼兩類,序列密碼以密鑰控制密鑰發生器,產生一個隨機序列,用這個隨機序列和明文信息逐位進行異或運算,就得到密文,其加密單元為比特。
  • DSP集成開發環境中的混合編程及FFT算法的實現
    與TI提供的早期軟體開發工具相比,利用CCS能夠加快軟體開發進程,提高工作效率。CCS一般工作在兩種模式下:軟體仿真器和與硬體開發板相結合的在線編程。前者可以脫離DSP晶片,在PC機上模擬DSP指令集與工作機制,主要用於前期算法實現和調試。後者實時運行在DSP晶片上,可以在線編制和調試應用程式。
  • 基於Verilog硬體描述語言的AES密碼算法實現
    目前,分組密碼算法AES以其高效率、低開銷、實現簡單等特點被廣泛應用於密碼模塊的研製。隨著計算機信息技術和超大規模集成電路技術的成熟與發展,通過硬體來實現密鑰模塊的內部運作,可保證在外界無密鑰的明文流動,能夠實現真正意義上的保密。此外,硬體實現還具有高速、高可靠性等特點。目前許多AES算法的硬體實現採用基於RAM查找表方式來實現算法中最關鍵的SubBytes部分。
  • 從數學到物理學:加密算法簡介
    從編碼消息的角度來看,這是個絕妙的辦法,因為很少有納瓦霍人以外的人學過怎麼說這種語言,而且當時還沒有用納瓦霍語出版的書。但是除了詞語之外,納瓦霍人的口語並不是十分複雜(按密碼設計學的標準來看),一個母語為納瓦霍語的人再加上一個訓練有素的密碼學家,合作起來完全可以破解這套密碼。
  • 加密類型:5種加密算法以及如何選擇正確的算法
    加密是一種將數據轉換為無法解密的格式,以便只有授權方才能訪問信息的方法。加密密鑰與加密算法一起使加密過程成為可能。並且,基於這些密鑰的應用方式,主要主要使用兩種類型的加密方法:「對稱加密」和「非對稱加密」。這兩種方法都使用不同的數學算法(即我們剛才提到的那些加密算法)對數據進行加密。常見的加密算法列表包括RSA,ECC,3DES,AES等。
  • 基於小波域的二維混沌加密算法
    但是傳統的加密算法(如DES、RSA算法),雖然應用廣泛,但其相應的破譯方法已曾出不窮,更重要的是傳統的加密算法並不適用於對圖像及視頻的處理。圖像信息安全問題有著極為廣泛的含義,考慮其安全算法時,必須考慮其數據的冗餘性、對大數據量數據加密的可實現性及能否經受住常見的數據有損壓縮、格式變換等操作。
  • 為什麼質數能被用於加密算法?
    直到上個世紀70年代,麻省理工學院(MIT)的三位數學家李維斯特、薩莫爾和阿德曼共同提出了一種公開密鑰加密算法,也就是後來被廣泛應用於銀行加密的RSA算法,人們才認識到了質數的巨大作用。質數為什麼能用於加密算法?這個問題就要涉及到大數的質因數分解。
  • 混沌加密技術技術詳解和設計實現
    混沌加密技術屬於第三代混沌保密通信,該類方法將混沌和密碼學的優點結合起來,具有非常高的安全性能。基於脈衝同步的混沌通信則屬於第四代混沌保密通信。三、混沌加密算法的性能評估參考美國國家標準與技術協會(NIST)的評判規則LNIST的評判規則大體分為三個部分:安全性、代價和算法實現特性。
  • 實數FFT算法的設計及其C語言實現
    目前國內有關數位訊號處理的教材在講解快速傅立葉變換(FFT)時,都是以複數FFT為重點,實數FFT算法都是一筆帶過,書中給出的具體實現程序多為BASIC或FORTRAN程序並且多數不能真正運行。
  • ARM中ADS環境下C語言和彙編語言混合編程及示例
    另外在一些對性能非常敏感的代碼塊,基於彙編與機器碼一一對應的關係,這時不能依靠C編譯器的生成代碼,而要手工編寫彙編,從而達到優化的目的。彙編語言是和CPU的指令集緊密相連的,作為涉及底層的嵌入式系統開發,熟練對應彙編語言的使用也是必須的。這裡主要討論C和彙編的混合編程,包括相互之間的函數調用。下面分四種情況來進行討論,不涉及C++語言。
  • AES加解密算法IP核的設計與實現
    Rijndael加密算法由比利時密碼學家JoanDaemen和VincentRijmen發明的一種迭代型分組加密算法,2000年被確定為美高級加密標準AES的最終算法。本文通過對AES算法的流程進行改進,提高IP核的性能,從而獲得低成本高性能的AES加密實現方法。
  • RJMU401的DES和SM4分組密碼算法原理
    RJMU401國密安全晶片採用業內領先的低功耗高效率32位安全處理器SC100內核,內置SM1/SM2/SM3/SM4/DES/RSA/AES等多種加密算法,具備完備的安全防護,如頻率檢測、抗SPA/DPA/EMA/DEMA攻擊、防篡改檢測電路等措施,防止外部惡意攻擊,保護晶片數據安全;該晶片已經取得國密型號認證
  • 區塊鏈加密機制的不同算法及其原理解析
    區塊鏈世界通過共識算法、加密、點對點網絡以及獎勵機制等,可以形成一個自治的社區,形成一個通過挖礦機制(POW)來達成一種不通過中心機構來達成的信任,最終實現點對點的價值流通。在EKT中Token鏈是一個並行多鏈的結構,多鏈多共識,共享用戶基礎,這也意味著使用EKT公鏈,可以把Token鏈和Dapp鏈分離,並自由的選擇共識算法和加密算法。
  • 區塊鏈丨非對稱加密算法,區塊鏈的加密秘訣!
    前面講到了對稱加密算法,今天講講非對稱加密算法。可以說非對稱算法是對稱算法的升級,因為非對稱算法是基於對稱算法而被研究出來的。非對稱算法與對稱算法的不同之處在於非對稱算法省去了對稱加密算法時要分發密鑰的麻煩,所以說是對稱加密算法的升級。在非對稱加密算法中同樣具有兩種密鑰:私鑰(private key)和公鑰(public key)。
  • AES加密算法的高速低功耗ASIC設計
    0.18μm CMOS工藝,實現了最高工作頻率410MHz,數據吞吐率5.23Gbps,功耗為58 mW。本文引用地址:http://www.eepw.com.cn/article/189858.htm關鍵詞:AES;ASIC;T盒;功耗管理;時鐘門控1 引言從1976年美國數據加密標準算法(DES)公布以來,到20世紀末,DES算法或其某些變形基本上主宰了對稱算法的研究與開發進程。