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

2021-01-07 電子產品世界

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進行了評價。常用加密算法主要用來對敏感數據、摘要、籤名等信息進行加密。按照密鑰方式劃分,可分為對稱加密算法和非對稱加密算法。一、對稱加密算法對稱加密算法有時又叫做傳統密碼算法,加密密鑰可以從解密密鑰中推導出來,解密密鑰也可以從加密密鑰中推導出來。在大多數的對稱算法中,加密密鑰和解密密鑰是相同的,因此也成為秘密密鑰算法或者單密鑰算法。
  • 加密算法科普:des、aes加密、對稱、非對稱加密、Hash算法都是啥
    這種特性使得許多錯誤校正碼,例如奇偶校驗位,即使在加密前計算而在加密後進行校驗也可以得出正確結果。每個使用OFB的輸出塊與其前面所有的輸出塊相關,因此不能並行化處理。然而,由於平文和密文只在最終的異或過程中使用,因此可以事先對IV進行加密,最後並行的將平文或密文進行並行的異或處理。可以利用輸入全0的CBC模式產生OFB模式的密鑰流。
  • 一種基於DES加密算法的加密方法
    摘要:本發明公開了一種基於DES加密算法的加密方法,其加密方法採用服務端與客戶端共享密鑰集文件,實現通信過程中使用動態密鑰的對稱加密方法,建立密鑰集文件,密鑰集文件由三個互相垂直方向的X、Y、Z組成的長方體形的三維模型;伺服器端在X、Y有效值範圍內隨機一個坐標,確定一組密鑰,進行DES加密;將選取的X、Y分別值轉換為4位16進位數
  • DES、RC4、AES等加密算法優勢及應用
    程式設計師捍衛自己珍貴的代碼,全靠花式的加密算法。代碼加密有多重要?程式設計師半年做出的產品,盜版者可能半天就能完全破解。  加密算法的本質,首先是為了對數據進行保密並防止篡改,其次更具有了身份驗證的功能。像是你跟女友約定好的話術,這句話一說出來,她就知道是什麼意思,並且知道說話的人是你,但任何其他人根本不知道你們在說什麼。  根據密鑰類型的不同,加密算法分為對稱和非對稱兩種。
  • 利用帕斯卡三角和謝爾賓斯基三角的加密算法
    本文中,我們開發出了一款新的加密算法,它利用了帕斯卡三角和謝爾賓斯基三角相關的概念。要論述的做法是利用帕斯卡三角做替換和利用謝爾賓斯基三角做置換。這個方法在現實生活中簡單、易行。而且攻擊者很難從密文中破譯。但此方法在暴力破解和詞頻攻擊中依然很脆弱。
  • 小叮噹Python進階(二):爬蟲與加密算法Part2之DES
    DESDES算法為密碼體制中的對稱密碼體制,又被稱為數據加密標準。DES是一個分組加密算法,典型的DES以64位為分組對數據加密,加密和解密用的是同一個算法。在DES算法中,Key為7個字節共56位,是DES算法的工作密鑰;Data為8個字節64位,是要被加密或被解密的數據;Mode為DES的工作方式。有兩種工作方式,加密或解密。密鑰長64位,密鑰事實上是56位參與DES運算(第8、16、24、32、40、48、56、64位是校驗位,使得每個密鑰都有奇數個1),分組後的明文組和56位的密鑰按位替代或交換的方法形成密文組。
  • 到底什麼是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.
  • des算法原理
    DES算法全稱為Data Encryption Standard,即數據加密算法,它是IBM公司於1975年研究成功並公開發表的。DES算法的入口參數有三個:Key、Data、Mode。其中Key為8個字節共64位,是DES算法的工作密鑰;Data也為8個字節64位,是要被加密或被解密的數據;Mode為DES的工作方式,有兩種:加密或解密。
  • 什麼是加密算法?
    Java的加密知識也是Java常見的領域之一,加密技術的底層確實很複雜,運用了大量的數學知識,要弄明白非常複雜。但是Java語言中運用密碼加密工具卻是非常簡單。我們在Java裡面運用這些加密技術,只需要把原理和使用場景等搞明白就可以了,具體底層實現不用研究。
  • 單片機的程式語言:彙編語言、C語言、PL/M和BASIC語言
    BASIC語言的最基本語句只有17種,而且它們都是常見的英文單詞或其變形,如READ、END等,很容易學習和掌握。(2)是一種「人機會話」式的語言。通過鍵盤操作,用BASIC語言編寫完的程序,可以在計算機上邊編寫、邊修改、邊運行。而且還可以在運行中向人們提示信息的指出錯誤,要求人去改正,即實現了人和機器的對話。(3)功能較全、適用面廣。
  • 區塊鏈丨對稱加密算法
    在前面的文章中,有提到「對稱加密算法」,這是一種相對應用得比較早的加密算法之一,其技術也是比較成熟的。在執行對稱加密時,數據發出方將需要明文(之前的文章中有解釋)和加密密鑰一起輸入至加密算法中進行處理,使之變成更為複雜的加密密文,之後再將密文發布出去。
  • 加密類型:5種加密算法以及如何選擇正確的算法
    加密是一種將數據轉換為無法解密的格式,以便只有授權方才能訪問信息的方法。加密密鑰與加密算法一起使加密過程成為可能。並且,基於這些密鑰的應用方式,主要主要使用兩種類型的加密方法:「對稱加密」和「非對稱加密」。這兩種方法都使用不同的數學算法(即我們剛才提到的那些加密算法)對數據進行加密。常見的加密算法列表包括RSA,ECC,3DES,AES等。
  • C語言和彙編語言在開發單片機時各有哪些優缺點?
    實用乾貨下載:關注我們「單片機系列」,回復「資料」獲取單片機相關資料。答:有關這方面的教材,大學裡常用的一本是《IBM-PC彙編語言程序設計》清華大學出版社出版的,在網上以及書店都是可以找到的,另外網上還可以搜索到很多其他的教材如:《微機原理及彙編語言教程》(楊延雙 張曉冬 等編著 )和《16/32 位微機原理、彙編語言及接口技術》(作者: 鍾曉捷 陳濤 ,機械工業出版社 出版)等,可以在較大型的科技書店裡查找或者直接從網上訂購。6.
  • 最安全的加密算法RSA
    前幾天朋友讓我贈送她魔遊紀系列電影,於是贈送了,每部還剩四個名額不能浪費了,這裡送給大家,回復公眾號"魔遊紀N"得到對應的贈送連結,N代表第幾部,目前只有3、4、5。零、背景之前介紹了AES加密算法,這個算法的缺點是加密鑰匙和解密鑰匙一樣,缺少安全性。
  • 區塊鏈丨非對稱加密算法,區塊鏈的加密秘訣!
    前面講到了對稱加密算法,今天講講非對稱加密算法。可以說非對稱算法是對稱算法的升級,因為非對稱算法是基於對稱算法而被研究出來的。非對稱算法與對稱算法的不同之處在於非對稱算法省去了對稱加密算法時要分發密鑰的麻煩,所以說是對稱加密算法的升級。在非對稱加密算法中同樣具有兩種密鑰:私鑰(private key)和公鑰(public key)。
  • 用OpenSSL加密文件
    / 怎樣用對稱密碼加密文件?Openssl的子命令,用於用對稱密碼加密或解密一個文件.-des3the algorithm is des3.使用des3算法.-eencrypt a file.It's counterpart is '-d',decrypt.加密文件.與之相對的是-d,表示解密.
  • RJMU401的DES和SM4分組密碼算法原理
    RJMU401國密安全晶片採用業內領先的低功耗高效率32位安全處理器SC100內核,內置SM1/SM2/SM3/SM4/DES/RSA/AES等多種加密算法,具備完備的安全防護,如頻率檢測、抗SPA/DPA/EMA/DEMA攻擊、防篡改檢測電路等措施,防止外部惡意攻擊,保護晶片數據安全;該晶片已經取得國密型號認證
  • keil C語言與彙編語言混合編程
    同時注意,為了能夠讓彙編語言 能訪問到C語言中定義的變量和函數,他們必須聲明為外部變量,即加extern 前綴。(2) c程序中訪問彙編程序中的變量如果需要在c程序中訪問彙編程序中的變量,則彙編程序中的變量名必須以下劃線為首字符,並用global使之成為全局變量。