應(yīng)用于數(shù)據(jù)庫及數(shù)據(jù)庫加解密方面的RSA算法(二)

加密

RSA算法在數(shù)據(jù)機(jī)密性和完整性上的實(shí)現(xiàn)

數(shù)據(jù)機(jī)密性的實(shí)施就是對數(shù)據(jù)進(jìn)行加密,以實(shí)現(xiàn)數(shù)據(jù)傳輸?shù)陌踩浴?shù)據(jù)完整性的實(shí)施就是對數(shù)據(jù)進(jìn)行數(shù)字簽名,以實(shí)現(xiàn)發(fā)送者身份和文檔的認(rèn)證。數(shù)字簽名的實(shí)施過程中用到的一種函數(shù)叫哈希函數(shù)(Hach函數(shù),單向散列函數(shù))。假設(shè)有甲和乙進(jìn)行通信,乙要確認(rèn)信是甲發(fā)出的。數(shù)字簽名的基本協(xié)議很簡單:

(1)甲用他的私人密鑰對文件加密,從而對文件簽名;

(2)甲將簽名的文件傳給乙;

(3)乙用甲的公開密鑰解密文件,從而驗(yàn)證簽名。

在實(shí)際的實(shí)現(xiàn)過程中,明文m都是長文件,則第(1)步效率太低。為了節(jié)約時間,可以引入單向散列函數(shù)進(jìn)行使用。甲并不對整個文件簽名,而是對文件的散列值進(jìn)行簽名。下面介紹一種將DES算法和RSA算法結(jié)合起來的數(shù)據(jù)加密和數(shù)字簽字協(xié)議:

(1)客戶端和服務(wù)器建立一個鏈接;

(2)顧客進(jìn)入個人信息加密網(wǎng)頁;

(3)顧客申請服務(wù)器生成服務(wù)器的一個公鑰和一個私鑰;

(4)顧客生成顧客的一個公鑰和一個私鑰;

(5)顧客得到服務(wù)器的公鑰后用它對一個會話密鑰加密并傳送給服務(wù)器;

(6)服務(wù)器用自己的私鑰對加密了的會話密鑰進(jìn)行解密,得到會話密鑰;

(7)顧客產(chǎn)生要傳送文件m的單向散列值h;

(8)顧客用他的私人密鑰對單向散列值h進(jìn)行加密得到數(shù)字簽名a;

(9)顧客用與服務(wù)器共享的會話密鑰加密m和a并將結(jié)果傳送給服務(wù)器;

(10)服務(wù)器用會話密鑰解密這傳送過來的信息,得到明文文件m和數(shù)字簽名a;

(11)服務(wù)器用明文文件m產(chǎn)生文件m的單向散列值m,同時用顧客的公鑰對傳過來的散列簽名a進(jìn)行解密,得到恢復(fù)的散列值。如果恢復(fù)的散列值與從m產(chǎn)生的散列值m相同,則證明是顧客的簽名。