時(shí)間:2023-06-15|瀏覽:260
一、公鑰算法與私鑰算法 1、私鑰算法 私鑰加密算法,也稱對(duì)稱加密算法,因?yàn)榧用芎徒饷芤褂孟嗤拿荑€。由于密鑰需要保密,因此這種算法不適合公開使用。常見的算法有DES加密算法和AES加密算法。DES算法將原始數(shù)據(jù)拆分成8字節(jié)數(shù)據(jù)塊,對(duì)每個(gè)數(shù)據(jù)塊都進(jìn)行加密,使用前一個(gè)數(shù)據(jù)塊的加密結(jié)果和密鑰加密下一個(gè)數(shù)據(jù)塊,解密過程反之。Dotnet提供的DES算法實(shí)現(xiàn)的DESCryptoServiceProvider(或TripleDESCryptoServiceProvider)類可自動(dòng)處理這些加密和解密的過程。
對(duì)稱算法和非對(duì)稱算法的特點(diǎn)如下: 對(duì)稱算法: 加密和解密使用相同的密鑰,需要傳輸密鑰,密鑰保密性具有風(fēng)險(xiǎn) 算法相對(duì)簡(jiǎn)單,加解密速度很快
非對(duì)稱算法: 加密使用公鑰,解密使用私鑰 2、公鑰算法 公鑰加密算法,也稱非對(duì)稱加密算法。加密和解密密碼不同,一個(gè)是公鑰,另一個(gè)是私鑰。公鑰和私鑰是一對(duì)密鑰,公鑰可公開,私鑰需保密。用公鑰加密(或簽名)的數(shù)據(jù)只有對(duì)應(yīng)的私鑰可以解密,用私鑰加密(或簽名)的數(shù)據(jù)只有對(duì)應(yīng)的公鑰可以解密。如果可以用公鑰解密,則必然是對(duì)應(yīng)的私鑰加的密;如果可以用私鑰解密,則必然是對(duì)應(yīng)的公鑰加的密。公鑰和私鑰是相對(duì)存在的。
3、錢包地址 公鑰可以生成唯一地址,用于驗(yàn)證發(fā)送交易的地址是否與公鑰生成的地址一致。
二、實(shí)現(xiàn)數(shù)據(jù)安全傳輸 為了實(shí)現(xiàn)數(shù)據(jù)安全傳輸,需要進(jìn)行加密。如果使用對(duì)稱加密算法,加解密使用同一個(gè)密鑰,對(duì)方也需要知道該密鑰才能解密。如果密鑰也一起傳輸,密碼保密性會(huì)存在風(fēng)險(xiǎn)。因此,我們使用非對(duì)稱算法: 1.接收方生成一對(duì)密鑰,即私鑰和公鑰; 2.接收方將公鑰發(fā)送給發(fā)送方; 3.發(fā)送方使用收到的公鑰對(duì)數(shù)據(jù)進(jìn)行加密,然后發(fā)送給接收方; 4.接收方使用自己的私鑰解密數(shù)據(jù)。
以下為RSA結(jié)合TripleDES算法加密解密過程。
三、數(shù)字簽名 公鑰體系的另一個(gè)用途就是對(duì)數(shù)據(jù)進(jìn)行數(shù)字簽名,用于驗(yàn)證發(fā)送方身份并保護(hù)數(shù)據(jù)完整性。例如,發(fā)送者A想要傳遞資料給大家,用自己的私鑰對(duì)資料進(jìn)行加密即簽名。所有收到資料的人可以用發(fā)送者的公鑰驗(yàn)證該資料是否由A發(fā)出來(lái)的。用公鑰可以解密的必然是用對(duì)應(yīng)的私鑰加的密,而私鑰只有簽名者持有。
四、公鑰算法的缺點(diǎn) 現(xiàn)實(shí)中,公鑰機(jī)制也有缺點(diǎn),那就是效率非常低,比常用的私鑰算法(如DES和AES)慢上一兩個(gè)數(shù)量級(jí)。因此,公鑰算法不適合對(duì)大量原始信息進(jìn)行加密。為了同時(shí)兼顧安全和效率,我們通常結(jié)合使用公鑰算法和私鑰算法: 1.發(fā)送方使用對(duì)稱算法對(duì)原始信息進(jìn)行加密; 2.接收方通過公鑰機(jī)制生成一對(duì)密鑰,一個(gè)公鑰,一個(gè)私鑰; 3.接收方將公鑰發(fā)送給發(fā)送方; 4.發(fā)送方使用公鑰對(duì)對(duì)稱算法的密鑰進(jìn)行加密,并發(fā)送給接收方; 5.接收方使用私鑰進(jìn)行解密,得到對(duì)稱算法的密鑰; 6.發(fā)送方再將加密的原始信息發(fā)送給接收方; 7.接收方使用對(duì)稱算法的密鑰進(jìn)行解密。
總結(jié): 1.每個(gè)用戶都有一對(duì)私鑰和公鑰。 a.私鑰用于本人解密和簽名。 b.公鑰用于加密和驗(yàn)證簽名,向他人公開。 2.用戶發(fā)送文件時(shí),用私鑰簽名,他人用公鑰解密,以確保信息由其發(fā)送。 即數(shù)字簽名。 3.用戶接收文件時(shí),他人用他的公鑰加密,他用私鑰解密,以確保信息只能被他看到。即安全傳輸。