RSA,DSA等加解密算法介紹 轉載

1)      MD5/SHA

MessageDigest是一個數據的數字指紋.即對一個任意長度的數據進行計算,產生一個唯一指紋號.

MessageDigest的特性:

A)     兩個不同的數據,難以生成相同的指紋號

B)      對於指定的指紋號,難以逆向計算出原始數據

代表:MD5/SHA

 

2)    DES

單密鑰算法,是信息的發送方採用密鑰A進行數據加密,信息的接收方採用同一個密鑰A進行數據解密.

單密鑰算法是一個對稱算法.

缺點:由於採用同一個密鑰進行加密解密,在多用戶的情況下,密鑰保管的安全性是一個問題.

代表:DES

 

3)  RSA

RSA 是一種非對稱加解密算法。

RSA is named from the initials of the authors, Ron Rivest, Adi Shamir, and

Leonard Adleman,who first published the algorithm.  

RSA 與 DSA 都是非對稱加密算法。其中RSA的安全性是基於極其困難的大整數的分解(兩個素數的乘積);DSA 的安全性

是基於整數有限域離散對數難題。基本上可以認爲相同密鑰長度的 RSA 算法與 DSA 算法安全性相當。

公鑰用於加密,它是向所有人公開的;私鑰用於解密,只有密文的接收者持有。

適用OPENSSL 適用RSA 的命令如下:

生成一個密鑰(私鑰)

[root@hunterfu ~]# openssl genrsa -out private.key 1024

注意: 需要注意的是這個文件包含了公鑰和密鑰兩部分,也就是說這個文件即可用來加密也可以用來解密,後面的1024是生成

密鑰的長度.

通過密鑰文件private.key 提取公鑰

[root@hunterfu ~]# openssl rsa -in private.key -pubout -out pub.key

使用公鑰加密信息

[root@hunterfu ~]# echo -n "123456" | openssl rsautl -encrypt -inkey pub.key -pubin >encode.result

使用私鑰解密信息

[root@hunterfu ~]#cat encode.result | openssl rsautl -decrypt  -inkey private.key

      123456

 

4)  DSA (Digital Signature Algorithm)

         DSA 一般用於數字簽名和認證。

     DSA是Schnorr和ElGamal簽名算法的變種,被美國NIST作爲DSS(DigitalSignature Standard)。

     DSA是基於整數有限域離散對數難題的,其安全性與RSA相比差不多。

     在DSA數字簽名和認證中,發送者使用自己的私鑰對文件或消息進行簽名,接受者收到消息後使用發送者的公鑰

來驗證簽名的真實性。DSA只是一種算法,和RSA不同之處在於它不能用作加密和解密,也不能進行密鑰交換,

只用於簽名,它比RSA要快很多.

生成一個密鑰(私鑰)

 [root@hunterfu ~]# openssl dsaparam -out dsaparam.pem 1024

 [root@hunterfu ~]# openssl gendsa -out privkey.pem dsaparam.pem

生成公鑰

[root@hunterfu ~]# openssl dsa -in privkey.pem -out pubkey.pem -pubout     

[root@hunterfu ~]# rm -fr dsaparam.pem

使用私鑰簽名

[root@hunterfu ~]# echo -n "123456" | openssl dgst -dss1 -sign privkey.pem > sign.result

使用公鑰驗證

[root@hunterfu ~]# echo -n "123456"  | openssl dgst -dss1 -verify pubkey.pem -signature sign.result

 

5) 其他選擇: ECC

 RSA 與 DSA 各有優缺點,那有沒一個更好的選擇呢?答案是肯定的,ECC(Elliptic Curves Cryptography):橢

圓曲線算法。

 ECC 與 RSA 相比,有以下的優點:

(1)相同密鑰長度下,安全性能更高,如160位ECC已經與1024位RSA、DSA有相同的安全強度。

(2)計算量小,處理速度快,在私鑰的處理速度上(解密和簽名),ECC遠 比RSA、DSA快得多。

(3)存儲空間佔用小 ECC的密鑰尺寸和系統參數與RSA、DSA相比要小得多, 所以佔用的存儲空間小得多。

(4)帶寬要求低使得ECC具有廣泛得應用前景。

 這使得ECC 取代RSA成爲可能。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章