亚洲天堂网_国产中出_日韩激情网_97se.com_中国亚洲老少妇色视频

MATLAB代做|FPGA代做|simulink代做——公開密鑰加密

發布時間:2021/9/2 瀏覽數:1947
隨著Internet用戶的激增,世界正步入網絡經濟的新時代。如網上購物、網上銀行、網上證券等。然而,有一些人利用利用他們所掌握的技術非法侵入他人的計算機系統,竊取、篡改、破壞一些重要的數據,給社會造成巨大的損失。密碼技術的發展與應用,對解決信息交換的安全問題,保障數據信息的安全,起著不可忽視的作用。

所謂密碼技術,就是針對信息進行重新編碼,從而達到隱藏信息的內容,使非法用戶無法獲取信息真實內容的一種手段。目前在網絡中,一般采用兩種密碼體制:對稱密鑰體制和非對稱密鑰體制。對稱密鑰體制中的加密密鑰和解秘密鑰是相同的,所以又稱密秘密鑰密碼體制。對稱密鑰算法運算效率高、使用方便、加密效率高,在處理大量數據時被廣泛使用,但其關鍵是要保證密鑰的安全,為安全起見,密鑰要定期改變,所以,對稱密鑰就存在一個如何安全管理密鑰的問題。與對稱密鑰體制相對應的非對稱密鑰體制又稱為公開密鑰密碼體制,它是在1976 年由Diffe 和Hellman 發表的《密碼學的新方向》一文中提出的,從此打破了長期使用單密鑰體制的束縛。自此提出公約密碼思想以后,涌現出很多的公約密鑰算法體系,經過20多年的實踐檢驗,公約系統的應用技術日趨完善,應用領域日趨廣泛。公開密鑰密碼體制,加密密鑰和解秘密鑰是分開采用一對不同的密鑰進行的,分別存在一個公鑰和私鑰,公鑰公開,私鑰保密,并且知道其中一個時并不能從中推出另一個。其典型的算法有背包密碼、RSA等。  其中RSA公約算法系統因為其可靠安全性,易于實現性,更是受大家的認可和歡迎。

RSA加密算法的最大優點就是不需要對密鑰通信進行保密,所需傳輸的只有公開密鑰,這樣就省去了一條開銷很大的密鑰傳輸信道。其保密性強,密鑰管理方便,并且具有數字簽名、認證和簽別等多種功能,特別適合于現代保密通信的需要。大多數使用公鑰密碼進行加密和數字簽名的產品和標準使用的都是RSA算法。RSA的安全性是基于大數因子分解的困難性。目前一般認為RSA需要1024位以上的字長才有安全保障。由于RSA所采用的模冪運算耗時太多,因此它通常只能用于加密少量數據或者加密密鑰。需要注意的是,RSA的安全性只是一種計算安全性,絕對不是無條件的安全性,這是由它的理論基礎決定的。所以,在實現RSA算法的過程中,每一步都應該盡量從安全性方面考慮。本文就RSA算法以及如何用Matlab語言實現給于了詳細的分析。

1  數據加密概述
   密碼學是一門古老而深奧的學科,它對一般人來說是陌生的,因為長期以來,它只在很少的范圍內,如軍事、外交、情報等部門使用。計算機密碼學是研究計算機信息加密、解密及其變換的科學,是數學和計算機的交叉學科,也是一門新興的學科。隨著計算機網絡和計算機通訊技術的發展,計算機密碼學得到前所未有的重視并迅速普及和發展起來。在國外,它已成為計算機安全主要的研究方向,也是計算機安全課程教學中的主要內容。

  密碼是實現秘密通訊的主要手段,是隱蔽語言、文字、圖象的特種符號。凡是用特種符號按照通訊雙方約定的方法把電文的原形隱蔽起來,不為第三者所識別的通訊方式稱為密碼通訊。在計算機通訊中,采用密碼技術將信息隱蔽起來,再將隱蔽后的信息傳輸出去,使信息在傳輸過程中即使被竊取或載獲,竊取者也不能了解信息的內容,從而保證信息傳輸的安全。

任何一個加密系統至少包括下面四個組成部分:

(1)未加密的報文,也稱明文。

(2)加密后的報文,也稱密文。

(3)加密解密設備或算法。

(4)加密解密的密鑰。

發送方用加密密鑰,通過加密設備或算法,將信息加密后發送出去。接收方在收到密文后,用解密密鑰將密文解密,恢復為明文。如果傳輸中有人竊取,他只能得到無法理解的密文,從而對信息起到保密作用。

 

1.1 基本概念
數據加密技術就是指將一個信息或明文經過加密鑰匙及加密函數轉換,變成無意義的密文,而接收方則將此密文經過解密函數.解密鑰匙還原成明文。加密技術是網絡安全技術的基石。

明文,即加密前的真實的數據或信息,它是可以被外界所識別,它指代的含義比較廣泛,比如用戶A要將一份文件發送給用戶B,那么我們就將用戶A手里所拿的那份文件稱之為明文。

密文,就是對信息經過一定的處理,使它變成無意義的亂碼,非指定用戶無法對它進行識別,例如A使用密鑰K加密消息并將其發送給B,B收到加密的消息后,使用密鑰K對其解密以恢復原始消息,那么在這一過程當中A在途中發送給B的東西我們就叫它密文,因為這個文件除B外,其他人得到它也沒有任何意義,這就保證了信息傳送的保密性。

完成加密和解密的算法成為為密碼體制。人們一方面要把自己的信號隱蔽起來,另一方面則想把別人的隱蔽信息挖掘出來,于是就產生了密碼分析的逆科學——密碼分析。密碼分析研究的問題是如何把密文轉換成明文。把密文轉換成明文的過程稱為破譯。破譯也是進行函數變換,變換過程中使用的參數也叫密鑰。

   一般地,如果求解一個問題需要一定量的計算,但環境所能提供的實際資源卻無法實現,則這種問題是計算上不可能的。如果一個密碼體制的破譯是計算上不可能的。則稱該密碼體制是計算上安全的。密碼體制必須滿足三個基本要求:

(1)對所有的密鑰、加密和解密都必須迅速有效;

(2)體制必須容易使用;

(3)體制的安全性必須只依賴于密鑰的保密性。密碼體制要實現的功能可分為保密性和真實性兩種。

保密性要求密碼分析員無法從截獲的密文中求出明文。一般情況下一個密碼體制的保密性包括兩項要求:

(1)即使截獲了一段密文C,甚至知道了與它對應的明文M,密碼分析要從系統中求出解密變換,仍然是計算上不可行的。

(2)密碼分析員要由截獲的密文C中系統的求出明文M是計算上不可能的。

數據的真實性要求密碼分析員無法用虛假的密文代替真是密文而不被察覺,它也包括兩個要求:

(1)對于給定的C,即使密碼分析員知道了對應于它的明文M,要系統的求出加密變換仍然是計算上不可能的。

(2)密碼分析員要系統地找到密文,使其是明文空間上有意義的明文,這在計算上是不可能的。

1.2 數據加密分類
專用密鑰:又稱為對稱密鑰或單密鑰,加密和解密時使用同一個密鑰,即同一個算法。如DES和MIT的Kerberos算法。單密鑰是最簡單方式,通信雙方必須交換彼此密鑰,當需給對方發信息時,用自己的加密密鑰進行加密,而在接收方收到數據后,用對方所給的密鑰進行解密。當一個文本要加密傳送時,該文本用密鑰加密構成密文,密文在信道上傳送,收到密文后用同一個密鑰將密文解出來,形成普通文體供閱讀。在對稱密鑰中,密鑰的管理極為重要,一旦密鑰丟失,密文將無密可保。這種方式在與多方通信時因為需要保存很多密鑰而變得很復雜,而且密鑰本身的安全就是一個問題。

公開密鑰:又稱非對稱密鑰,加密和解密時使用不同的密鑰,即不同的算法,雖然兩者之間存在一定的關系,但不可能輕易地從一個推導出另一個。有一把公用的加密密鑰,有多把解密密鑰,如RSA算法。

非對稱密鑰由于兩個密鑰(加密密鑰和解密密鑰)各不相同,因而可以將一個密鑰公開,而將另一個密鑰保密,同樣可以起到加密的作用。

在這種編碼過程中,一個密碼用來加密消息,而另一個密碼用來解密消息。在兩個密鑰中有一種關系,通常是數學關系。公鑰和私鑰都是一組十分長的、數字上相關的素數(是另一個大數字的因數)。有一個密鑰不足以翻譯出消息,因為用一個密鑰加密的消息只能用另一個密鑰才能解密。每個用戶可以得到唯一的一對密鑰,一個是公開的,另一個是保密的。公共密鑰保存在公共區域,可在用戶中傳遞,甚至可印在報紙上面。而私鑰必須存放在安全保密的地方。任何人都可以有你的公鑰,但是只有你一個人能有你的私鑰。它的工作過程是:“你要我聽你的嗎?除非你用我的公鑰加密該消息,我就可以聽你的,因為我知道沒有別人在偷聽。只有我的私鑰(其他人沒有)才能解密該消息,所以我知道沒有人能讀到這個消息。我不必擔心大家都有我的公鑰,因為它不能用來解密該消息。”

公鑰加密體制具有以下優點:

(1) 密鑰分配簡單。

(2) 密鑰的保存量少。

(3) 可以滿足互不相識的人之間進行私人談話時的保密性要求。

(4) 可以完成數字簽名和數字鑒別。

   RSA算法的理論基礎是數論中的歐拉函數,他的安全性基于大數分解的困難性,在理論上要計算兩個大素數的乘積是容易的,但反過來要把一個大數分解成兩個素數因子相乘的形式是很困難的,正是由于這個原因保證了此算法的安全性。

RSA的安全性依賴于大數分解。公鑰和私鑰都是兩個大素數 ( 大于 100個十進制位)的函數。據猜測,從一個密鑰和密文推斷出明文的難度等同于分解兩個大素數的積。
  密鑰對的產生:選擇兩個大素數,p 和q 。計算:n = p * q 。然后隨機選擇加密密鑰e,要求 e 和 ( p - 1 ) * ( q - 1 ) 互質。最后,利用Euclid 算法計算解密密鑰d, 滿足 e * d = 1 ( mod ( p - 1 ) * ( q - 1 ) ) 其中n和d也要互質。數e和 n是公鑰,d是私鑰。兩個素數p和q不再需要,應該丟棄,不要讓任何人知道。 加密信息 m(二進制表示)時,首先把m分成等長數據塊 m1 ,m2,..., mi ,塊長s,其中 2^s <= n, s 盡可能的大。對應的密文是:ci = mi^e ( mod n ) ( a ) 解密時作如下計算: mi = ci^d ( mod n ) ( b )

算法流程

(1). 產生密鑰

① 任意選取兩個不同的大質數p和q,計算乘積n=p*q; 
    ② 任意選取一個大整數e,e與(p-1)*(q-1)互素,整數e用做加密密鑰。注意:e的選取是很容易的,例如,所有大于p和q的素數都可用。 
    ③ 確定解密密鑰d:  d * e = 1 mod(p - 1)*(q - 1) 
    根據e、p和q可以容易地計算出d。 
    ④ 公開整數n和e,但是不公開d; 

clc

clear

disp('產生密鑰對:')

p=input('輸入第一個大素數:p=');                                        

q=input('輸入第二個大素數:q=');

n=p*q

fain=(p-1)*(q-1)

e=floor(unifrnd(0,fain,1,1))                  

while(gcd(e,fain)~=1)|(e<2);

 e=floor(unifrnd(0,fain,1,1))

end

%模n求逆函數

n1=fain;n2=e;b1=0;b2=1;

for i=1:1000

        q1=floor(n1/n2);

        r=n1-q1*n2;

       if r~=0

           n1=n2;

           n2=r;

           t=b2;

           b2=b1-q1*b2;

           b1=t;

       else

         break

       end

end

if n2~=1

  warning('所求的模逆不存在') ;

end

if n2==1

  d=mod(b2,fain)

  fid=input('輸入待加密的明文:','s');

f=abs(fid);

for i=1:length(f)  

a=f(i);b=e;c=1;

for j=1:1000

if b==0

        dashuchenmi=c;

end

if mod(b,2)~=0

         b=b-1;

         c=mod(c*a,n);

else

       b=b/2;

       a=mod(a*a,n);

end

end

  dashuchenmi=c;

  miwen(i)=setstr(dashuchenmi);

end

for i=1:length(f)

a2=miwen(i);b2=d;c2=1;

for j=1:1000

if b2==0

  dashuchenmi2=c2;

end

if mod(b2,2)~=0

       b2=b2-1;

       c2=mod(c2*a2,n);

else

       b2=b2/2;

       a2=mod(a2*a2,n);

end

end

       dashuchenmi2=c2;

       mingwen(i)=setstr(dashuchenmi2);

end

end

disp('對所輸入的明文進行加密后的密文:')

miwen

disp('經過解密后恢復出的明文:')

mingwen
————————————————

聯系:highspeedlogic

QQ :1224848052

微信:HuangL1121

郵箱:1224848052@qq.com

網站:http://www.mat7lab.com/

網站:http://www.hslogic.com/

微信掃一掃:


Copyright 2017-2025 © 嘉興麥特萊博軟件開發工作室
  • 網站備案號:浙ICP備18008591號-1