1. 程式人生 > >祕鑰加密實現簡單概述

祕鑰加密實現簡單概述

開始之前:只對祕鑰加密方式做簡單描述。

對稱加密:

使用同一組祕鑰對資料進行加密與解密。即加密解密都使用同一串金鑰,
常見的對稱加密的演算法有:
DES: Data Encryption Standard, 56bits
3DES:
AES: Advanced (128, 192, 256bits)
Blowfish, Twofish
IDEA, RC6, CAST5
對稱加密在加密時是把原始資料分割成固定大小的塊,逐個對資料進行加密。

對稱加密的優點是加密解密都使用同一個金鑰,(單向加密解密使用不同的金鑰公鑰加密私鑰解密),加密解密演算法簡單,所以執行加密與過程中相對非對稱加密演算法執行效率更高。但是對稱加密出的資料體積更大。
但是由於對稱加密的特性(只有一串鑰匙),造成了祕鑰分發困難,資料來源無法確認等狀況。
對稱的金鑰交換:
1、 A: a,p 協商生成公開的整數a, 大素數p
    B: a,p
2、 A:生成隱私資料 :x (x<p ),計算得出 a^x%p,傳送給B
    B:生成隱私資料 :y,計算得出 a^y%p,傳送給A
3、 A:計算得出 [(a^y%p)^x] %p = a^xy%p, 生成為金鑰
    B:計算得出 [(a^x%p)^y] %p = a^xy%p,生成為金鑰

“`

非對稱加密:

非對稱加密共有兩把鑰匙。分為公鑰(public key)與私鑰(private, secret key),通常情況下會將公鑰分發出去,而私鑰自己保留。從私鑰中可以提取出公鑰。
比較常見的加密演算法有:RSA(加密,數字簽名) ,DSA(數字簽名) ,ELGamal
其中一把加密過的資料只能使用另外一把解開,
加密解密的祕鑰並不一致,造成了演算法相對複雜,所以在加密解密過程中會需要大量的時間。但是加密過的資料體積並不會擴大。所以此類密演算法比較適合對較小的資料進行加密,
當加密的一部份目的是為了讓對方對自己的身份進行驗證時或者向對方宣告自己的身份時,加密過程與加密產生的檔案稱為數字簽名。驗證身份的過程是及使用本地儲存的公鑰進行解密,解密成功則為此公鑰對應的主機的資料。

雜湊演算法:

算列演算法的目的是將資料生成特定的特徵碼,使用雜湊演算法生成的特徵碼的長度是固定的。但進行加密的資料可以是任意長度的(包括1bit),源資料產生細小的變換,生成的特徵碼將產生巨大的變化(雪崩效應),生成的特徵碼無法進行反推,即由特徵碼生成原始資料。雜湊演算法多用於確定資料的完整性(對接收到的資料進行雜湊算計計算,生成特徵碼,與官方提供的特徵碼進行對比),雜湊演算法又稱雜湊。
常見的雜湊演算法:
md5: 128bits、 sha1: 160bits、 sha224
sha256、 sha384、 sha512
雜湊演算法相關命令:
sha1sum:
    簡介  sha1sum 生成160位概要值,sha1sum可以從標準輸入讀取資料,也可以指定檔案。
    格式 sha1sum 選項 檔案

     sha1sum 檔案 > 檔案 :將檔案的雜湊值儲存在檔案中。
     sha1sum 檔案 >> 檔案 :將檔案的雜湊值追加到檔案中。

    --check :校驗
    sha1sum --check 儲存雜湊值的檔案。

例:sha1sum /dev/sr0
    計算光碟的雜湊值。
sha512sum
    格式同上

加密實現:

對稱金鑰交換:傳送方用對方的公鑰加密一個對稱金鑰後傳送給對方

非對稱祕鑰加密資訊: 傳送方使用接受方的公鑰加密,接收方收到資料,使用自己的私鑰進行解密。