導航:首頁 > 源碼編譯 > 加密演算法要達到什麼目的

加密演算法要達到什麼目的

發布時間:2022-07-28 09:30:25

『壹』 加密的目的

以某種特殊的演算法改變原有的信息數據,使得未授權的用戶即使獲得了已加密的信號,但因不知解密的方法,仍然無法了解信息的內容。

加密建立在對信息進行數學編碼和解碼的基礎上。 我們使用的加密類型分為兩種密鑰 -- 一種是公共密鑰,一種是私人密鑰。 您發送信息給我們時,使用公共密鑰加密信息。 一旦我們收到您的加密信息,我們則使用私人密鑰破譯信息密碼。 同一密鑰不能既是加密信息又是解密信息。 因此,使用私人密鑰加密的信息只能使用公共密鑰解密,反之亦然,以確保您的信息安全。

『貳』 密碼學AES演算法解題

AES(Advanced Encryption Standard):高級加密標准,是下一代的加密演算法標准,速度快,安全級別高。 用AES加密2000年10月,NIST(美國國家標准和技術協會)宣布通過從15種候選演算法中選出的一項新的密匙加密標准。Rijndael被選中成為將來的AES。Rijndael是在1999年下半年,由研究員Joan Daemen 和 Vincent Rijmen 創建的。AES正日益成為加密各種形式的電子數據的實際標准。 美國標准與技術研究院(NIST)於2002年5月26日制定了新的高級加密標准(AES)規范。 演算法原理 AES演算法基於排列和置換運算。排列是對數據重新進行安排,置換是將一個數據單元替換為另一個。AES使用幾種不同的方法來執行排列和置換運算。AES是一個迭代的、對稱密鑰分組的密碼,它可以使用128、192和256位密鑰,並且用128位(16位元組)分組加密和解密數據。與公共密鑰加密使用密鑰對不同,對稱密鑰密碼使用相同的密鑰加密和解密數據。通過分組密碼返回的加密數據的位數與輸入數據相同。迭代加密使用一個循環結構,在該循環中重復置換和替換輸入數據。密碼學簡介據記載,公元前400年,古希臘人發明了置換密碼。1881年世界上的第一個電話保密專利出現。在第二次世界大戰期間,德國軍方啟用「恩尼格瑪」密碼機,密碼學在戰爭中起著非常重要的作用。 隨著信息化和數字化社會的發展,人們對信息安全和保密的重要性認識不斷提高,於是在1997年,美國國家保准局公布實施了「美國數據加密標准(DES)」,民間力量開始全面介入密碼學的研究和應用中,採用的加密演算法有DES、RSA、SHA等。隨著對加密強度的不斷提高,近期又出現了AES、ECC等。 使用密碼學可以達到以下目的:保密性:防止用戶的標識或數據被讀取。數據完整性:防止數據被更改。身份驗證:確保數據發自特定的一方。

『叄』 公鑰和私鑰加密主要演算法有哪些,其基本思想是什麼

加密演算法

加密技術是對信息進行編碼和解碼的技術,編碼是把原來可讀信息(又稱明文)譯成代碼形式(又稱密文),其逆過程就是解碼(解密)。加密技術的要點是加密演算法,加密演算法可以分為對稱加密、不對稱加密和不可逆加密三類演算法。

對稱加密演算法 對稱加密演算法是應用較早的加密演算法,技術成熟。在對稱加密演算法中,數據發信方將明文(原始數據)和加密密鑰一起經過特殊加密演算法處理後,使其變成復雜的加密密文發送出去。收信方收到密文後,若想解讀原文,則需要使用加密用過的密鑰及相同演算法的逆演算法對密文進行解密,才能使其恢復成可讀明文。在對稱加密演算法中,使用的密鑰只有一個,發收信雙方都使用這個密鑰對數據進行加密和解密,這就要求解密方事先必須知道加密密鑰。對稱加密演算法的特點是演算法公開、計算量小、加密速度快、加密效率高。不足之處是,交易雙方都使用同樣鑰匙,安全性得不到保證。此外,每對用戶每次使用對稱加密演算法時,都需要使用其他人不知道的惟一鑰匙,這會使得發收信雙方所擁有的鑰匙數量成幾何級數增長,密鑰管理成為用戶的負擔。對稱加密演算法在分布式網路系統上使用較為困難,主要是因為密鑰管理困難,使用成本較高。在計算機專網系統中廣泛使用的對稱加密演算法有DES和IDEA等。美國國家標准局倡導的AES即將作為新標准取代DES。

不對稱加密演算法不對稱加密演算法使用兩把完全不同但又是完全匹配的一對鑰匙—公鑰和私鑰。在使用不對稱加密演算法加密文件時,只有使用匹配的一對公鑰和私鑰,才能完成對明文的加密和解密過程。加密明文時採用公鑰加密,解密密文時使用私鑰才能完成,而且發信方(加密者)知道收信方的公鑰,只有收信方(解密者)才是唯一知道自己私鑰的人。不對稱加密演算法的基本原理是,如果發信方想發送只有收信方才能解讀的加密信息,發信方必須首先知道收信方的公鑰,然後利用收信方的公鑰來加密原文;收信方收到加密密文後,使用自己的私鑰才能解密密文。顯然,採用不對稱加密演算法,收發信雙方在通信之前,收信方必須將自己早已隨機生成的公鑰送給發信方,而自己保留私鑰。由於不對稱演算法擁有兩個密鑰,因而特別適用於分布式系統中的數據加密。廣泛應用的不對稱加密演算法有RSA演算法和美國國家標准局提出的DSA。以不對稱加密演算法為基礎的加密技術應用非常廣泛。

不可逆加密演算法 不可逆加密演算法的特徵是加密過程中不需要使用密鑰,輸入明文後由系統直接經過加密演算法處理成密文,這種加密後的數據是無法被解密的,只有重新輸入明文,並再次經過同樣不可逆的加密演算法處理,得到相同的加密密文並被系統重新識別後,才能真正解密。顯然,在這類加密過程中,加密是自己,解密還得是自己,而所謂解密,實際上就是重新加一次密,所應用的「密碼」也就是輸入的明文。不可逆加密演算法不存在密鑰保管和分發問題,非常適合在分布式網路系統上使用,但因加密計算復雜,工作量相當繁重,通常只在數據量有限的情形下使用,如廣泛應用在計算機系統中的口令加密,利用的就是不可逆加密演算法。近年來,隨著計算機系統性能的不斷提高,不可逆加密的應用領域正在逐漸增大。在計算機網路中應用較多不可逆加密演算法的有RSA公司發明的MD5演算法和由美國國家標准局建議的不可逆加密標准SHS(Secure Hash Standard:安全雜亂信息標准)等。

加密技術

加密演算法是加密技術的基礎,任何一種成熟的加密技術都是建立多種加密演算法組合,或者加密演算法和其他應用軟體有機結合的基礎之上的。下面我們介紹幾種在計算機網路應用領域廣泛應用的加密技術。

非否認(Non-repudiation)技術 該技術的核心是不對稱加密演算法的公鑰技術,通過產生一個與用戶認證數據有關的數字簽名來完成。當用戶執行某一交易時,這種簽名能夠保證用戶今後無法否認該交易發生的事實。由於非否認技術的操作過程簡單,而且直接包含在用戶的某類正常的電子交易中,因而成為當前用戶進行電子商務、取得商務信任的重要保證。

PGP(Pretty Good Privacy)技術 PGP技術是一個基於不對稱加密演算法RSA公鑰體系的郵件加密技術,也是一種操作簡單、使用方便、普及程度較高的加密軟體。PGP技術不但可以對電子郵件加密,防止非授權者閱讀信件;還能對電子郵件附加數字簽名,使收信人能明確了解發信人的真實身份;也可以在不需要通過任何保密渠道傳遞密鑰的情況下,使人們安全地進行保密通信。PGP技術創造性地把RSA不對稱加密演算法的方便性和傳統加密體系結合起來,在數字簽名和密鑰認證管理機制方面採用了無縫結合的巧妙設計,使其幾乎成為最為流行的公鑰加密軟體包。

數字簽名(Digital Signature)技術 數字簽名技術是不對稱加密演算法的典型應用。數字簽名的應用過程是,數據源發送方使用自己的私鑰對數據校驗和或其他與數據內容有關的變數進行加密處理,完成對數據的合法「簽名」,數據接收方則利用對方的公鑰來解讀收到的「數字簽名」,並將解讀結果用於對數據完整性的檢驗,以確認簽名的合法性。數字簽名技術是在網路系統虛擬環境中確認身份的重要技術,完全可以代替現實過程中的「親筆簽字」,在技術和法律上有保證。在公鑰與私鑰管理方面,數字簽名應用與加密郵件PGP技術正好相反。在數字簽名應用中,發送者的公鑰可以很方便地得到,但他的私鑰則需要嚴格保密。

PKI(Public Key Infrastructure)技術 PKI技術是一種以不對稱加密技術為核心、可以為網路提供安全服務的公鑰基礎設施。PKI技術最初主要應用在Internet環境中,為復雜的互聯網系統提供統一的身份認證、數據加密和完整性保障機制。由於PKI技術在網路安全領域所表現出的巨大優勢,因而受到銀行、證券、政府等核心應用系統的青睞。PKI技術既是信息安全技術的核心,也是電子商務的關鍵和基礎技術。由於通過網路進行的電子商務、電子政務等活動缺少物理接觸,因而使得利用電子方式驗證信任關系變得至關重要,PKI技術恰好能夠有效解決電子商務應用中的機密性、真實性、完整性、不可否認性和存取控制等安全問題。一個實用的PKI體系還必須充分考慮互操作性和可擴展性。PKI體系所包含的認證中心(CA)、注冊中心(RA)、策略管理、密鑰與證書管理、密鑰備份與恢復、撤銷系統等功能模塊應該有機地結合在一起。

加密的未來趨勢

盡管雙鑰密碼體制比單鑰密碼體制更為可靠,但由於計算過於復雜,雙鑰密碼體制在進行大信息量通信時,加密速率僅為單鑰體制的1/100,甚至是 1/1000。正是由於不同體制的加密演算法各有所長,所以在今後相當長的一段時期內,各類加密體制將會共同發展。而在由IBM等公司於1996年聯合推出的用於電子商務的協議標准SET(Secure Electronic Transaction)中和1992年由多國聯合開發的PGP技術中,均採用了包含單鑰密碼、雙鑰密碼、單向雜湊演算法和隨機數生成演算法在內的混合密碼系統的動向來看,這似乎從一個側面展示了今後密碼技術應用的未來。

在單鑰密碼領域,一次一密被認為是最為可靠的機制,但是由於流密碼體制中的密鑰流生成器在演算法上未能突破有限循環,故一直未被廣泛應用。如果找到一個在演算法上接近無限循環的密鑰流生成器,該體制將會有一個質的飛躍。近年來,混沌學理論的研究給在這一方向產生突破帶來了曙光。此外,充滿生氣的量子密碼被認為是一個潛在的發展方向,因為它是基於光學和量子力學理論的。該理論對於在光纖通信中加強信息安全、對付擁有量子計算能力的破譯無疑是一種理想的解決方法。

由於電子商務等民用系統的應用需求,認證加密演算法也將有較大發展。此外,在傳統密碼體制中,還將會產生類似於IDEA這樣的新成員,新成員的一個主要特徵就是在演算法上有創新和突破,而不僅僅是對傳統演算法進行修正或改進。密碼學是一個正在不斷發展的年輕學科,任何未被認識的加/解密機制都有可能在其中佔有一席之地。

目前,對信息系統或電子郵件的安全問題,還沒有一個非常有效的解決方案,其主要原因是由於互聯網固有的異構性,沒有一個單一的信任機構可以滿足互聯網全程異構性的所有需要,也沒有一個單一的協議能夠適用於互聯網全程異構性的所有情況。解決的辦法只有依靠軟體代理了,即採用軟體代理來自動管理用戶所持有的證書(即用戶所屬的信任結構)以及用戶所有的行為。每當用戶要發送一則消息或一封電子郵件時,代理就會自動與對方的代理協商,找出一個共同信任的機構或一個通用協議來進行通信。在互聯網環境中,下一代的安全信息系統會自動為用戶發送加密郵件,同樣當用戶要向某人發送電子郵件時,用戶的本地代理首先將與對方的代理交互,協商一個適合雙方的認證機構。當然,電子郵件也需要不同的技術支持,因為電子郵件不是端到端的通信,而是通過多個中間機構把電子郵件分程傳遞到各自的通信機器上,最後到達目的地。

『肆』 加密演算法和密鑰的作用

一、加密演算法:將原有的明文信息轉化為看似無規律的密文。收信方需要對應的解密密鑰,採用對應的解密方法將密文還原為明文(能看懂有意義的信息)。
二、密鑰分為加密密鑰和解密密鑰,對於「對稱加密演算法」,這兩者是一樣的;而「非對稱加密演算法」的密鑰分為「公開密鑰」和「私有密鑰」,用公開密鑰加密,則需要私有密鑰解密;反之用私有密鑰加密,則需要公開密鑰解密,是可以互換的。
三、現代的計算機加密演算法比較復雜,要弄懂是需要離散數學、高等代數等知識,不可能在這里講明白。
四、以「凱撒移位密碼」這種最古來的簡單密碼來講解什麼是加密演算法和密鑰:
4.1)「凱撒密碼」在《愷撒傳》中有記載,凱撒密碼是將每一個字母用字母表中的該字母後的第三個字母代替。盡管歷史記載的凱撒密碼只用了3個位置的移位,但顯然從1到25個位置的移位我們都可以使用, 因此,為了使密碼有更高的安全性,單字母替換密碼就出現了。
若用每個字母的後11位替換當前字母,可以認為密鑰=11。
如此得到的密碼表為:
明碼表 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z(即26個字母表)
密碼表 L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
加密的方法很簡單,就是講明碼字母換成對應的密碼表字母。
如:明文 I LOVE YOU
密文 T WZGP JZF
在當時,這樣簡單的密碼就足夠起到保密作用;但到近代都已經很容易被破解了,更不用說現代有計算機秒破了!
4.2)其他加密演算法
有興趣可以了解更復雜的加密演算法:如近代的「維吉尼亞演算法」,還屬於字母位移加密,好懂!而現代計算機文件深度加密常用的「AES加密演算法」,原理很復雜,需要高等數學等知識才能讀懂。

『伍』 關於DSA演算法的相關信息

DES演算法
(文檔類別:C++) 2003-11-19

DES演算法理論

本世紀五十年代以來,密碼學研究領域出現了最具代表性的兩大成就。其中之一
就是1971年美國學者塔奇曼 (Tuchman)和麥耶(Meyer)根據資訊理論創始人香農
(Shannon)提出的「多重加密有效性理論」創立的,後於1977年由美國國家標准局頒
布的數據加密標准。
DES密碼實際上是Lucifer密碼的進一步發展。它是一種採用傳統加密方法的區組
密碼。

它的演算法是對稱的,既可用於加密又可用於解密。

美國國家標准局1973年開始研究除國防部外的其它部門的計算機系統的數據加密
標准,於1973年5月15日和1974年8月27日先後兩次向公眾發出了徵求加密演算法的公告。
加密演算法要達到的目的通常稱為DES密碼演算法要求主要為以下四點:

提供高質量的數據保護,防止數據未經授權的泄露和未被察覺的修改;具有相當
高的復雜性,使得破譯的開銷超過可能獲得的利益,同時又要便於理解和掌握 DES密碼
體制的安全性應該不依賴於演算法的保密,其安全性僅以加密密鑰的保密為基礎實現經
濟,運行有效,並且適用於多種完全不同的應用。

1977年1月,美國****頒布:採納IBM公司設計的方案作為非機密數據的正式數據
加密標准(DES棗Data Encryption Standard)。

目前在這里,隨著三金工程尤其是金卡工程的啟動,DES演算法在POS、ATM、
磁卡及智能卡(IC卡)、加油站、高速公路收費站等領域被廣泛應用,以此來實現關鍵
數據的保密,如信用卡持卡人的PIN的加密傳輸,IC卡與POS間的雙向認證、金融交易數
據包的MAC校驗等,均用到DES演算法。

DES演算法的入口參數有三個:Key、Data、Mode。其中Key為8個位元組共64位,
是DES演算法的工作密鑰;Data也為8個位元組64位,是要被加密或被解密的數據;Mode為
DES的工作方式,有兩種:加密或解密。

DES演算法是這樣工作的:如Mode為加密,則用Key 去把數據Data進行加密,
生成Data的密碼形式(64位)作為DES的輸出結果;如Mode為解密,則用Key去把密碼形
式的數據Data解密,還原為Data的明碼形式(64位)作為DES的輸出結果。在通信網路
的兩端,雙方約定一致的Key,在通信的源點用Key對核心數據進行DES加密,然後以密
碼形式在公共通信網(如電話網)中傳輸到通信網路的終點,數據到達目的地後,用同
樣的Key對密碼數據進行解密,便再現了明碼形式的核心數據。這樣,便保證了核心數
據(如PIN、MAC等)在公共通信網中傳輸的安全性和可靠性。

通過定期在通信網路的源端和目的端同時改用新的Key,便能更進一步提高
數據的保密性,這正是現在金融交易網路的流行做法。

DES演算法詳述

DES演算法把64位的明文輸入塊變為64位的密文輸出塊,它所使用的密鑰也是
64位,其功能是把輸入的64位數據塊按位重新組合,並把輸出分為L0、R0兩部分,每部
分各長32位,其置換規則見下表:

58,50,12,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,

即將輸入的第58位換到第一位,第50位換到第2位,...,依此類推,最後一
位是原來的第7位。L0、R0則是換位輸出後的兩部分,L0是輸出的左32位,R0 是右32
位,例:設置換前的輸入值為D1D2D3......D64,則經過初始置換後的結果為:
L0=D58D50...D8;R0=D57D49...D7。

經過26次迭代運算後。得到L16、R16,將此作為輸入,進行逆置換,即得到
密文輸出。逆置換正好是初始置的逆運算,例如,第1位經過初始置換後,處於第40
位,而通過逆置換,又將第40位換回到第1位,其逆置換規則如下表所示:

40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,
38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,
36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,
34,2,42,10,50,18,58 26,33,1,41, 9,49,17,57,25,

放大換位表

32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9, 8, 9, 10,11,
12,13,12,13,14,15,16,17,16,17,18,19,20,21,20,21,
22,23,24,25,24,25,26,27,28,29,28,29,30,31,32, 1,

單純換位表

16,7,20,21,29,12,28,17, 1,15,23,26, 5,18,31,10,
2,8,24,14,32,27, 3, 9,19,13,30, 6,22,11, 4,25,

在f(Ri,Ki)演算法描述圖中,S1,S2...S8為選擇函數,其功能是把6bit數據變
為4bit數據。下面給出選擇函數Si(i=1,2......的功能表:
選擇函數Si

S1:
14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7,
0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8,
4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0,
15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13,
S2:
15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,
3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5,
0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15,
13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9,
S3:
10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8,
13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1,
13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7,
1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12,
S4:
7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15,
13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9,
10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4,
3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14,
S5:
2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9,
14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6,
4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14,
11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3,
S6:
12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11,
10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8,
9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6,
4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13,
S7:
4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1,
?3,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6,
1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2,
6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12,
S8:
13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7,
1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2,
7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8,
2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11,

在此以S1為例說明其功能,我們可以看到:在S1中,共有4行數據,命名為0,
1、2、3行;每行有16列,命名為0、1、2、3,......,14、15列。

現設輸入為: D=D1D2D3D4D5D6
令:列=D2D3D4D5
行=D1D6

然後在S1表中查得對應的數,以4位二進製表示,此即為選擇函數S1的輸
出。下面給出子密鑰Ki(48bit)的生成演算法

從子密鑰Ki的生成演算法描述圖中我們可以看到:初始Key值為64位,但DES算
法規定,其中第8、16、......64位是奇偶校驗位,不參與DES運算。故Key 實際可用位
數便只有56位。即:經過縮小選擇換位表1的變換後,Key 的位數由64 位變成了56位,
此56位分為C0、D0兩部分,各28位,然後分別進行第1次循環左移,得到C1、D1,將C1
(28位)、D1(28位)合並得到56位,再經過縮小選擇換位2,從而便得到了密鑰K0
(48位)。依此類推,便可得到K1、K2、......、K15,不過需要注意的是,16次循環
左移對應的左移位數要依據下述規則進行:

循環左移位數
1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1

以上介紹了DES演算法的加密過程。DES演算法的解密過程是一樣的,區別僅僅在
於第一次迭代時用子密鑰K15,第二次K14、......,最後一次用K0,演算法本身並沒有任
何變化。
DES演算法具有極高安全性,到目前為止,除了用窮舉搜索法對DES演算法進行攻擊
外,還沒有發現更有效的辦法。而56位長的密鑰的窮舉空間為256,這意味著如果一台
計算機的速度是每一秒種檢測一百萬個密鑰,則它搜索完全部密鑰就需要將近2285年的
時間,可見,這是難以實現的,當然,隨著科學技術的發展,當出現超高速計算機後,
我們可考慮把DES密鑰的長度再增長一些,以此來達到更高的保密程度。

由上述DES演算法介紹我們可以看到:DES演算法中只用到64位密鑰中的其中56
位,而第8、16、24、......64位8個位並未參與DES運算,這一點,向我們提出了一個
應用上的要求,即DES的安全性是基於除了8,16,24,......64位外的其餘56位的組合
變化256才得以保證的。因此,在實際應用中,我們應避開使用第8,16,24,......64
位作為有效數據位,而使用其它的56位作為有效數據位,才能保證DES演算法安全可靠地
發揮作用。如果不了解這一點,把密鑰Key的8,16,24,..... .64位作為有效數據使
用,將不能保證DES加密數據的安全性,對運用DES來達到保密作用的系統產生數據被破
譯的危險,這正是DES演算法在應用上的誤區,是各級技術人員、各級領導在使用過程中
應絕對避免的,而當今各金融部門及非金融部門,在運用DES工作,掌握DES工作密鑰
Key的領導、主管們,極易忽略,給使用中貌似安全的系統,留下了被人攻擊、被人破
譯的極大隱患。
DES演算法應用誤區的驗證數據

筆者用Turbo C編寫了DES演算法程序,並在PC機上對上述的DES 演算法的應用誤
區進行了騅,其驗證數據如下:
Key: 0x30 0x30 0x30 0x30......0x30(8個位元組)
Data: 0x31 0x31 0x31 0x31......0x31(8個位元組)
Mode: Encryption
結果:65 5e a6 28 cf 62 58 5f

如果把上述的Key換為8個位元組的0x31,而Data和Mode均不變,則執行DES 後
得到的密文完全一樣。類似地,用Key:8個0x32和用Key:8個0x33 去加密Data (8 個
0x31),二者的圖文輸出也是相同的:5e c3 ac e9 53 71 3b ba
我們可以得到出結論:
Key用0x30與用0x31是一樣的;
Key用0x32與用0x33是一樣的,......

當Key由8個0x32換成8個0x31後,貌似換成了新的Key,但由於0x30和0x31僅
僅是在第8,16,24......64有變化,而DES演算法並不使用Key的第8,16,......64位作
為Key的有效數據位,故:加密出的結果是一樣的。
DES解密的驗證數據:
Key: 0x31 0x31......0x31(8個0x31)
Data: 65 5e a6 28 cf 62 58 5f
Mode: Decryption
結果:0x31 0x31......0x31(8個0x31)

由以上看出:DES演算法加密與解密均工作正確。唯一需要避免的是:在應用
中,避開使用Key的第8,16......64位作為有效數據位,從而便避開了DES 演算法在應用
中的誤區。
避開DES演算法應用誤區的具體操作

在DES密鑰Key的使用、管理及密鑰更換的過程中,應絕對避開DES 演算法的應
用誤區,即:絕對不能把Key的第8,16,24......64位作為有效數據位,來對Key 進行
管理。這一點,特別推薦給金融銀行界及非金融業界的領導及決策者們,尤其是負責管
理密鑰的人,要對此點予以高度重視。有的銀行金融交易網路,利用定期更換DES密鑰
Key的辦法來進一步提高系統的安全性和可靠性,如果忽略了上述應用誤區,那麼,更
換新密鑰將是徒勞的,對金融交易網路的安全運行將是十分危險的,所以更換密鑰一定
要保證新Key與舊Key真正的不同,即除了第8,16,24,...64位外其它位數據發生了變
化,請務必對此保持高度重視.
��DES演算法把64位的明文輸入塊變為64位的密文輸出塊,它所使用的密鑰也是
64位.
其功能是把輸入的64位數據塊按位重新組合,並把輸出分為L0、R0兩部分,每部
分各長32位,其置換規則見下表:
58,50,12,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,
即將輸入的第58位換到第一位,第50位換到第2位,...,依此類推,最後一
位是原來的第7位。L0、R0則是換位輸出後的兩部分,L0是輸出的左32位,R0 是右32
位,例:設置換前的輸入值為D1D2D3......D64,則經過初始置換後的結果為:
L0=D58D50...D8;R0=D57D49...D7。
經過16次迭代運算後。得到L16、R16,將此作為輸入,進行逆置換,即得到
密文輸出。逆置換正好是初始置的逆運算,例如,第1位經過初始置換後,處於第40
位,而通過逆置換,又將第40位換回到第1位,其逆置換規則如下表所示:
40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,31,
38,6,46,14,54,22,62,30,37,5,45,13,53,21,61,29,
36,4,44,12,52,20,60,28,35,3,43,11,51,19,59,27,
34,2,42,10,50,18,58 26,33,1,41, 9,49,17,57,25,
放大換位表
32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9, 8, 9, 10,11,
12,13,12,13,14,15,16,17,16,17,18,19,20,21,20,21,
22,23,24,25,24,25,26,27,28,29,28,29,30,31,32, 1,
單純換位表
16,7,20,21,29,12,28,17, 1,15,23,26, 5,18,31,10,
2,8,24,14,32,27, 3, 9,19,13,30, 6,22,11, 4,25,
在f(Ri,Ki)演算法描述圖中,S1,S2...S8為選擇函數,其功能是把6bit數據變
為4bit數據。下面給出選擇函數Si(i=1,2......的功能表:
選擇函數Si
S1:
14,4,13,1,2,15,11,8,3,10,6,12,5,9,0,7,
0,15,7,4,14,2,13,1,10,6,12,11,9,5,3,8,
4,1,14,8,13,6,2,11,15,12,9,7,3,10,5,0,
15,12,8,2,4,9,1,7,5,11,3,14,10,0,6,13,
S2:
15,1,8,14,6,11,3,4,9,7,2,13,12,0,5,10,
3,13,4,7,15,2,8,14,12,0,1,10,6,9,11,5,
0,14,7,11,10,4,13,1,5,8,12,6,9,3,2,15,
13,8,10,1,3,15,4,2,11,6,7,12,0,5,14,9,
S3:
10,0,9,14,6,3,15,5,1,13,12,7,11,4,2,8,
13,7,0,9,3,4,6,10,2,8,5,14,12,11,15,1,
13,6,4,9,8,15,3,0,11,1,2,12,5,10,14,7,
1,10,13,0,6,9,8,7,4,15,14,3,11,5,2,12,
S4:
7,13,14,3,0,6,9,10,1,2,8,5,11,12,4,15,
13,8,11,5,6,15,0,3,4,7,2,12,1,10,14,9,
10,6,9,0,12,11,7,13,15,1,3,14,5,2,8,4,
3,15,0,6,10,1,13,8,9,4,5,11,12,7,2,14,
S5:
2,12,4,1,7,10,11,6,8,5,3,15,13,0,14,9,
14,11,2,12,4,7,13,1,5,0,15,10,3,9,8,6,
4,2,1,11,10,13,7,8,15,9,12,5,6,3,0,14,
11,8,12,7,1,14,2,13,6,15,0,9,10,4,5,3,
S6:
12,1,10,15,9,2,6,8,0,13,3,4,14,7,5,11,
10,15,4,2,7,12,9,5,6,1,13,14,0,11,3,8,
9,14,15,5,2,8,12,3,7,0,4,10,1,13,11,6,
4,3,2,12,9,5,15,10,11,14,1,7,6,0,8,13,
S7:
4,11,2,14,15,0,8,13,3,12,9,7,5,10,6,1,
13,0,11,7,4,9,1,10,14,3,5,12,2,15,8,6,
1,4,11,13,12,3,7,14,10,15,6,8,0,5,9,2,
6,11,13,8,1,4,10,7,9,5,0,15,14,2,3,12,
S8:
13,2,8,4,6,15,11,1,10,9,3,14,5,0,12,7,
1,15,13,8,10,3,7,4,12,5,6,11,0,14,9,2,
7,11,4,1,9,12,14,2,0,6,10,13,15,3,5,8,
2,1,14,7,4,10,8,13,15,12,9,0,3,5,6,11,
在此以S1為例說明其功能,我們可以看到:在S1中,共有4行數據,命名為0,
1、2、3行;每行有16列,命名為0、1、2、3,......,14、15列。
現設輸入為: D=D1D2D3D4D5D6
令:列=D2D3D4D5
行=D1D6
然後在S1表中查得對應的數,以4位二進製表示,此即為選擇函數S1的輸
出。下面給出子密鑰Ki(48bit)的生成演算法
從子密鑰Ki的生成演算法描述圖中我們可以看到:初始Key值為64位,但DES算
法規定,其中第8、16、......64位是奇偶校驗位,不參與DES運算。故Key 實際可用位
數便只有56位。即:經過縮小選擇換位表1的變換後,Key 的位數由64 位變成了56位,
此56位分為C0、D0兩部分,各28位,然後分別進行第1次循環左移,得到C1、D1,將C1
(28位)、D1(28位)合並得到56位,再經過縮小選擇換位2,從而便得到了密鑰K0
(48位)。依此類推,便可得到K1、K2、......、K15,不過需要注意的是,16次循環
左移對應的左移位數要依據下述規則進行:
循環左移位數
1,1,2,2,2,2,2,2,1,2,2,2,2,2,2,1
以上介紹了DES演算法的加密過程。DES演算法的解密過程是一樣的,區別僅僅在
於第一次迭代時用子密鑰K15,第二次K14、......,最後一次用K0,演算法本身並沒有任
何變化。

『陸』 數據加密和數據簽名的原理作用

加密可以幫助保護數據不被查看和修改,並且可以幫助在本不安全的信道上提供安全的通信方式。例如,可以使用加密演算法對數據進行加密,在加密狀態下傳輸數據,然後由預定的接收方對數據進行解密。如果第三方截獲了加密的數據,解密數據是很困難的。

在一個使用加密的典型場合中,雙方(小紅和小明)在不安全的信道上通信。小紅和小明想要確保任何可能正在偵聽的人無法理解他們之間的通信。而且,由於小紅和小明相距遙遠,因此小紅必須確保她從小明處收到的信息沒有在傳輸期間被任何人修改。此外,她必須確定信息確實是發自小明而不是有人模仿小明發出的。

加密用於達到以下目的:

保密性:幫助保護用戶的標識或數據不被讀取。
數據完整性:幫助保護數據不更改。
身份驗證:確保數據發自特定的一方。
為了達到這些目的,您可以使用演算法和慣例的組合(稱作加密基元)來創建加密方案。下表列出了加密基元及它們的用法。

加密基元 使用
私鑰加密(對稱加密) 對數據執行轉換,使第三方無法讀取該數據。此類型的加密使用單個共享的機密密鑰來加密和解密數據。
公鑰加密(不對稱加密) 對數據執行轉換,使第三方無法讀取該數據。此類加密使用公鑰/私鑰對來加密和解密數據。
加密簽名 通過創建對特定方唯一的數字簽名來幫助驗證數據是否發自特定方。此過程還使用哈希函數。
加密哈希 將數據從任意長度映射為定長位元組序列。哈希在統計上是唯一的;不同的雙位元組序列不會哈希為同一個值。

私鑰加密
私鑰加密演算法使用單個私鑰來加密和解密數據。由於具有密鑰的任意一方都可以使用該密鑰解密數據,因此必須保護密鑰不被未經授權的代理得到。私鑰加密又稱為對稱加密,因為同一密鑰既用於加密又用於解密。私鑰加密演算法非常快(與公鑰演算法相比),特別適用於對較大的數據流執行加密轉換。

通常,私鑰演算法(稱為塊密碼)用於一次加密一個數據塊。塊密碼(如 RC2、DES、TrippleDES 和 Rijndael)通過加密將 n 位元組的輸入塊轉換為加密位元組的輸出塊。如果要加密或解密位元組序列,必須逐塊進行。由於 n 很小(對於 RC2、DES 和 TripleDES,n = 8 位元組;n = 16 [默認值];n = 24;對於 Rijndael,n = 32),因此必須對大於 n 的值一次加密一個塊。

基類庫中提供的塊密碼類使用稱作密碼塊鏈 (CBC) 的鏈模式,它使用一個密鑰和一個初始化向量 (IV) 對數據執行加密轉換。對於給定的私鑰 k,一個不使用初始化向量的簡單塊密碼將把相同的明文輸入塊加密為同樣的密文輸出塊。如果在明文流中有重復的塊,那麼在密文流中將存在重復的塊。如果未經授權的用戶知道有關明文塊的結構的任何信息,就可以使用這些信息解密已知的密文塊並有可能發現您的密鑰。若要克服這個問題,可將上一個塊中的信息混合到加密下一個塊的過程中。這樣,兩個相同的明文塊的輸出就會不同。由於該技術使用上一個塊加密下一個塊,因此使用了一個 IV 來加密數據的第一個塊。使用該系統,未經授權的用戶有可能知道的公共消息標頭將無法用於對密鑰進行反向工程。

可以危及用此類型密碼加密的數據的一個方法是,對每個可能的密鑰執行窮舉搜索。根據用於執行加密的密鑰大小,即使使用最快的計算機執行這種搜索,也極其耗時,因此難以實施。使用較大的密鑰大小將使解密更加困難。雖然從理論上說加密不會使對手無法檢索加密的數據,但這確實極大增加了這樣做的成本。如果執行徹底搜索來檢索只在幾天內有意義的數據需要花費三個月的時間,那麼窮舉搜索的方法是不實用的。

私鑰加密的缺點是它假定雙方已就密鑰和 IV 達成協議,並且互相傳達了密鑰和 IV 的值。並且,密鑰必須對未經授權的用戶保密。由於存在這些問題,私鑰加密通常與公鑰加密一起使用,來秘密地傳達密鑰和 IV 的值。

假設小紅和小明是要在不安全的信道上進行通信的雙方,他們可能按以下方式使用私鑰加密。小紅和小明都同意使用一種具有特定密鑰和 IV 的特定演算法(如 Rijndael)。小紅撰寫一條消息並創建要在其上發送該消息的網路流。接下來,她使用該密鑰和 IV 加密該文本,並通過 Internet 發送該文本。她沒有將密鑰和 IV 發送給小明。小明收到該加密文本並使用預先商定的密鑰和 IV 對它進行解密。如果傳輸的內容被人截獲,截獲者將無法恢復原始消息,因為截獲者並不知道密鑰或 IV。在這個方案中,密鑰必須保密,但 IV 不需要保密。在一個實際方案中,將由小紅或小明生成私鑰並使用公鑰(不對稱)加密將私鑰(對稱)傳遞給對方。有關更多信息,請參見本主題後面的有關公鑰加密的部分。

.NET Framework 提供以下實現私鑰加密演算法的類:

DESCryptoServiceProvider
RC2CryptoServiceProvider
RijndaelManaged

公鑰加密
公鑰加密使用一個必須對未經授權的用戶保密的私鑰和一個可以對任何人公開的公鑰。公鑰和私鑰都在數學上相關聯;用公鑰加密的數據只能用私鑰解密,而用私鑰簽名的數據只能用公鑰驗證。公鑰可以提供給任何人;公鑰用於對要發送到私鑰持有者的數據進行加密。兩個密鑰對於通信會話都是唯一的。公鑰加密演算法也稱為不對稱演算法,原因是需要用一個密鑰加密數據而需要用另一個密鑰來解密數據。

公鑰加密演算法使用固定的緩沖區大小,而私鑰加密演算法使用長度可變的緩沖區。公鑰演算法無法像私鑰演算法那樣將數據鏈接起來成為流,原因是它只可以加密少量數據。因此,不對稱操作不使用與對稱操作相同的流模型。

雙方(小紅和小明)可以按照下列方式使用公鑰加密。首先,小紅生成一個公鑰/私鑰對。如果小明想要給小紅發送一條加密的消息,他將向她索要她的公鑰。小紅通過不安全的網路將她的公鑰發送給小明,小明接著使用該密鑰加密消息。(如果小明在不安全的信道如公共網路上收到小紅的密鑰,則小明必須同小紅驗證他具有她的公鑰的正確副本。)小明將加密的消息發送給小紅,而小紅使用她的私鑰解密該消息。

但是,在傳輸小紅的公鑰期間,未經授權的代理可能截獲該密鑰。而且,同一代理可能截獲來自小明的加密消息。但是,該代理無法用公鑰解密該消息。該消息只能用小紅的私鑰解密,而該私鑰沒有被傳輸。小紅不使用她的私鑰加密給小明的答復消息,原因是任何具有公鑰的人都可以解密該消息。如果小紅想要將消息發送回小明,她將向小明索要他的公鑰並使用該公鑰加密她的消息。然後,小明使用與他相關聯的私鑰來解密該消息。

在一個實際方案中,小紅和小明使用公鑰(不對稱)加密來傳輸私(對稱)鑰,而對他們的會話的其餘部分使用私鑰加密。

公鑰加密具有更大的密鑰空間(或密鑰的可能值范圍),因此不大容易受到對每個可能密鑰都進行嘗試的窮舉攻擊。由於不必保護公鑰,因此它易於分發。公鑰演算法可用於創建數字簽名以驗證數據發送方的身份。但是,公鑰演算法非常慢(與私鑰演算法相比),不適合用來加密大量數據。公鑰演算法僅對傳輸很少量的數據有用。公鑰加密通常用於加密一個私鑰演算法將要使用的密鑰和 IV。傳輸密鑰和 IV 後,會話的其餘部分將使用私鑰加密。

.NET Framework 提供以下實現公鑰加密演算法的類:

DSACryptoServiceProvider
RSACryptoServiceProvider
數字簽名
公鑰演算法還可用於構成數字簽名。數字簽名驗證發送方的身份(如果您信任發送方的公鑰)並幫助保護數據的完整性。使用由小紅生成的公鑰,小紅的數據的接收者可以通過將數字簽名與小紅的數據和小紅的公鑰進行比較來驗證是否是小紅發送了該數據。

為了使用公鑰加密對消息進行數字簽名,小紅首先將哈希演算法應用於該消息以創建消息摘要。該消息摘要是數據的緊湊且唯一的表示形式。然後,小紅用她的私鑰加密該消息摘要以創建她的個人簽名。在收到消息和簽名時,小明使用小紅的公鑰解密簽名以恢復消息摘要,並使用與小紅所使用的相同的哈希演算法來散列消息。如果小明計算的消息摘要與從小紅那裡收到的消息摘要完全一致,小明就可以確定該消息來自私鑰的持有人,並且數據未被修改過。如果小明相信小紅是私鑰的持有人,則他知道該消息來自小紅。

請注意,由於發送方的公鑰為大家所周知,並且它通常包含在數字簽名格式中,因此任何人都可以驗證簽名。此方法不保守消息的機密;若要使消息保密,還必須對消息進行加密。

.NET Framework 提供以下實現數字簽名演算法的類:

DSACryptoServiceProvider
RSACryptoServiceProvider
哈希值
哈希演算法將任意長度的二進制值映射為固定長度的較小二進制值,這個小的二進制值稱為哈希值。哈希值是一段數據唯一且極其緊湊的數值表示形式。如果散列一段明文而且哪怕只更改該段落的一個字母,隨後的哈希計算都將產生不同的值。要找到散列為同一個值的兩個不同的輸入,在計算上是不可能的。

消息身份驗證代碼 (MAC) 哈希函數通常與數字簽名一起用於對數據進行簽名,而消息檢測代碼 (MDC) 哈希函數則用於數據完整性。

雙方(小紅和小明)可按下面的方式使用哈希函數來確保數據的完整性。如果小紅對小明編寫一條消息並創建該消息的哈希,則小明可以在稍後散列該消息並將他的哈希與原始哈希進行比較。如果兩個哈希值相同,則該消息沒有被更改;如果值不相同,則該消息在小紅編寫它之後已被更改。為了使此系統發揮作用,小紅必須對除小明外的所有人保密原始的哈希值。

.NET Framework 提供以下實現數字簽名演算法的類:

HMACSHA1
MACTripleDES
MD5CryptoServiceProvider
SHA1Managed
SHA256Managed
SHA384Managed
SHA512Managed
隨機數生成
隨機數生成是許多加密操作不可分割的組成部分。例如,加密密鑰需要盡可能地隨機,以便使生成的密鑰很難再現。加密隨機數生成器必須生成無法以計算方法推算出(低於 p < .05 的概率)的輸出;即,任何推算下一個輸出位的方法不得比隨機猜測具有更高的成功概率。.NET Framework 中的類使用隨機數生成器生成加密密鑰。

RNGCryptoServiceProvider 類是隨機數生成器演算法的實現。

『柒』 什麼是數據加密

數據加密,最常見的就是對文件文檔進行加密處理,如最常見的如AES256,512,SM2、SM3等高強度加密演算法,或現在最常用的透明加密技術,一般分為驅動層及應用層透明加密,通過這些加密技術的結合,並開發出的透明加密軟體,如紅線防泄密系統,就完成了數據加密!

『捌』 大家都知道的加密演算法有什麼意義

摩斯密碼其實不是密碼,是把字母和符號轉化為二進制符號,點,劃,通過電信號的通斷傳播出去。只有這樣才能通過發報機把復雜的信息傳播出去。我們目前使用的電腦,電視,手機等電子設備的底層設計採用的仍是它的變形。

加密演算法有一定的規則性,加密原則很多人都知道,但關鍵在於你要知道密匙才能直接解開。最簡單的編碼是把字母按順序轉為數字,a1b2c3.。。。在這個基礎上編碼加n就是最簡單的密碼,這個n就是密匙,如果你不知道n=1或是某函數時,你就要花時間破解,當n越趨於復雜時,破解花費的精力就越多。理論上講,只要有足夠時間,任何密碼都可以被破譯掉。我們能做的是使這個時間足夠長,長到足以保護這個秘密,所以n就需要不時變化,避免被發現規律而被破譯。

『玖』 為什麼要使用數據加密技術

為了保護數據的安全,越來越多的人們選擇了數據加密軟體。
文件夾加密超級大師採用先進的加密演算法,使您的文件加密後,真正的達到超高的加密強度,讓您的加密文件無懈可擊,沒有密碼無法解密。
五種加密文件夾的方法
文件夾閃電加密和隱藏加密:瞬間加密您電腦里或移動硬碟上的文件夾,無大小限制,加密後防止復制、拷貝和刪除,並且不受系統影響。
文件夾金鑽加密、全面加密和移動加密:採用國際上成熟的加密演算法,將文件夾內的數據加密成不可識別的密文,加密強度最高,沒有密碼絕對無法解密。這三種加密方法也是同類加密軟體所沒有的。

閱讀全文

與加密演算法要達到什麼目的相關的資料

熱點內容
單片機6502 瀏覽:763
自助洗車有什麼app 瀏覽:935
程序員離職率多少 瀏覽:322
程序員那麼可愛電視劇今天沒更新 瀏覽:337
我的世界地形演算法 瀏覽:343
台灣dns的伺服器地址雲空間 瀏覽:288
音樂噴泉軟體要什麼加密狗 瀏覽:501
androidhttpmime 瀏覽:774
威科夫操盤法pdf 瀏覽:981
演算法可以用圖表表示 瀏覽:949
山西太原php 瀏覽:274
常用cmd網路命令 瀏覽:677
hashmap7源碼分析 瀏覽:899
搜索引擎原理技術與系統pdf 瀏覽:362
運動估計演算法python 瀏覽:861
java正則1 瀏覽:539
redhatlinux最新 瀏覽:182
python字典編程詞彙 瀏覽:147
微信和伺服器如何通訊 瀏覽:13
百家號伺服器配置有什麼用 瀏覽:601