rsa演算法是公開金鑰系統的代表,其安全性建立 在具有大素數因子的合數,其因子分解困難這一法則之上的。rijndael演算法作為新一代的高階加密標準,執行時不需要計算機有非常高的處理能力和大的內 存,操作可以很容易的抵禦時間和空間的攻擊,在不同的執行環境下始終能保持良好的效能。這使aes將安全,高效,效能,方便,靈活性集於一體,理應成為網 絡資料加密的首選。相比較,因為aes金鑰的長度最長只有256位元,可以利用軟體和硬體實現高速處理,而rsa演算法需要進行大整數的乘冪和求模等多倍字 長處理,處理速度明顯慢於aes[5];所以aes演算法加解密處理效率明顯高於rsa演算法。在金鑰管理方面,因為aes演算法要求在通訊前對金鑰進行秘密分 配,解密的私鑰必須通過網路傳送至加密資料接收方,而rsa採用公鑰加密,私鑰解密(或私鑰加密,公鑰解密),加解密過程中不必網路傳輸保密的金鑰;所以 rsa演算法金鑰管理要明顯優於aes演算法。
從上面比較得知,由於rsa加解密速度慢,不適合大量資料檔案加密,因此在網路中完全用公開密碼體制傳 輸機密資訊是沒有必要,也是不太現實的。aes加密速度很快,但是在網路傳輸過程中如何安全管理aes金鑰是保證aes加密安全的重要環節。這樣在傳送機 密資訊的雙方,如果使用aes對稱密碼體制對傳輸資料加密,同時使用rsa不對稱密碼體制來傳送aes的金鑰,就可以綜合發揮aes和rsa的優點同時避 免它們缺點來實現一種新的資料加密方案。加解密實現流程如下圖。
具體過程是先由接收方建立rsa金鑰對,接收方通過internet傳送rsa公鑰到傳送方,同時儲存rsa私鑰。而傳送方建立aes金鑰,並用該 aes金鑰加密待傳送的明文資料,同時用接受的rsa公鑰加密aes金鑰,最後把用rsa公鑰加密後的aes金鑰同密文一起通過internet傳輸傳送 到接收方。當接收方收到這個被加密的aes金鑰和密文後,首先呼叫接收方儲存的rsa私鑰,並用該私鑰解密加密的aes金鑰,得到aes金鑰。最後用該 aes金鑰解密密文得到明文。
aes+rsa結合最佳實踐
基本要求
保證傳輸資料的安全性
保證資料的完整性
能夠驗證客戶端的身份
基本流程
具體實現流程可做優化,例如:client將encryptkey傳輸給伺服器端的方式可以通過httpheader來實現。請求:
1. 伺服器端(server)和客戶端(client)分別生成自己的金鑰對
2. server和client分別交換自己的公鑰
3. client生成aes金鑰(aeskey)
4. client使用自己的rsa私鑰(privatekey)對請求明文資料(params)進行數字簽名
5. 將簽名加入到請求引數中,然後轉換為json格式
6. client使用aeskey對json資料進行加密得到密文(data)
7. client使用sever的rsa公鑰對aeskey進行加密(encryptkey)
8. 分別將data和encryptkey作為引數傳輸給伺服器端
伺服器端進行請求響應時將上面流程反過來即可
callable與runable相結合
本篇說明的是callable和future,它倆很有意思的,乙個產生結果,乙個拿到結果。callable介面類似於runnable,從名字就可以看出來了,但是runnable不會返回結果,並且無法丟擲返回結果的異常,而callable功能更強大一些,被執行緒執行後,可以返回值,這個返回值可以被fut...
RSA與AES的區別
rsa 非對稱加密,公鑰加密,私鑰解密,反之亦然。由於需要大數的乘冪求模等演算法,執行速度慢,不易於硬體實現。通常私鑰長度有512bit,1024bit,2048bit,4096bit,長度越長,越安全,但是生成金鑰越慢,加解密也越耗時。既然是加密,那肯定是不希望別人知道我的訊息,所以只有我才能解密...
qsort 與結構體相結合
題目描述 用一維陣列儲存學號和成績,然後,按成績排序輸出。輸入 輸入第一行包括乙個整數n 1 n 100 代表學生的個數。接下來的n行每行包括兩個整數p和q,分別代表每個學生的學號和成績。輸出 按照學生的成績從小到大進行排序,並將排序後的學生資訊列印出來。如果學生的成績相同,則按照學號的大小進行從小...