C# 加密算法[匯總]


散列類型】 不可逆,嚴格說不算加密算法,是一種保證數據完整性的算法或數字簽名.

MD5
SHA1
MD5(流Hash)

 

對稱類型】使用相同的密鑰進行數據的加密和解密.

3DES(Triple DES):是基於DES的對稱算法,對一塊數據用三個不同的密鑰進行三次加密,強度更高, 因此,DES使用8B的加密向量和密鑰,3DES使用24B的加密向量和密鑰.

DES
3DES

非對稱類型】 使用不同的密鑰進行加密和解密.

非對稱式加密就是加密和解密所使用的不是同一個密鑰,通常有兩個密鑰,稱為“公鑰”和“私鑰”,它們兩個必需配對使用,否則不能打開加密文件。這里的“公鑰”是指可以對外公布的,“私鑰”則不能,只能由持有人一個人知道。它的優越性就在這里,因為對稱式的加密方法如果是在網絡上傳輸加密文件就很難把密鑰告訴對方,不管用什么方法都有可能被別竊取。而非對稱式的加密方法有兩個密鑰,且其中的“公鑰”是可以公開的,也就不怕別人知道,收件人解密時只要用自己的私鑰即可以,這樣就很好地避免了密鑰的傳輸安全性問題。

在不對稱加密中,如果使用一個公鑰進行加密,就應該使用對應的私鑰進行解密,如果使用私鑰加密,就應該使用對應的公鑰進行解密.

例如:A給B發一份郵件,A希望除了B以外其他人都不能閱讀改郵件,所以使用B的公鑰加密,這樣B打開郵件並用他的私鑰解密,這種方式可以保證除了B以外其他人無法閱讀改郵件.還有一個問題是,除了A以外還有C,D,E都可以給B發送郵件,這樣就必須先解決一個問題,就是要確定發送者,而且關鍵是要避免發送方的簽名被人盜用.

這時可以使用發送方的私鑰對一個固定的字符串進行加密,讓后接收方通過使用發送方的公鑰進行檢驗,確定其真實性,這樣A發送的郵件確保只有B能閱讀,而B接收的郵件也確定是A發送的.

ECDsa
ECDiffieHellman

[注1]Cng前綴或后綴的類支持的平台:Windows 7, Windows Vista SP1 或更高版本, Windows Server 2008(不支持服務器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服務器核心)

[注2]在Cng的加密過程中,不要使用Encoding類將加密的字節數組轉換為字符串在進行解密,Encoding類驗證和轉換Unicode不允許使用的無效值,轉為字符串再解密可能變為不一樣的結果.

[注3]在網絡通信中,經常是先使用非對稱的密鑰進行互換,然后再使用對稱密鑰加密在線上發送的數據.

ECDiffieHellman算法用於密鑰的互換,從而進行安全傳送.
在ECDiffieHellman實例中,使用發送方的私鑰以及接收方的公鑰生成的字節數組作為對稱加密的密鑰,對發送的內容進行加密,而接收方可以使用自己的私鑰以及發送方的公鑰也生成一個相同的密鑰,對發送的內容進行解密.這就避免了對稱加密的密鑰傳輸過程.當然在此之前必須還要判斷發送方以確定其公鑰。這種情況可以先用發送方的的私鑰加密生成一個簽名,然后接收方使用發送方公鑰進行驗證,這樣就可以確定發送方了。

[注4]完整的密鑰互換和安全傳送:A給B發送郵件.

 1. A使用ECDsa算法先對一個字符串常量使用A的私鑰進行加密,生成一個簽名用於確定發送方的真實性.

 2. A使用ECDiffieHellman算法,用A私鑰和B的公鑰生成一個密鑰.

 3. A使用生成的密鑰對發送的內容進行加密.

 4.B使用ECDsa算法對A的簽名進行驗證,確定是A發送的.

 5.B使用 使用ECDiffieHellman算法,用B私鑰和A的公鑰生成一個密鑰.

 6.B 使用生成的密鑰對發送的內容進行解密.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM