2008年4月30日 星期三

C# 使用 MD5, DES, RSA 演算法加解密

http://richielin-programer.blogspot.com/2008/04/c-md5-des-rsa.html

在 .NET Framework 中有個 namespace 是專門處理加解密動作
System.Security.Cryptography
針對許多種加解密方式都有對應的類別來處理
天秤列出三種加密法實作
其它加密碼如 SHA1 系列與 MD5 語法相似,AES 與 DES 語法相似
就不另外寫出來了
PS. 以下部份資料取至 維基百科

MD5 演算法

MD5 即 Message-Digest Algorithm 5,是電腦廣泛使用的雜湊演算法之一
其演算法複雜度和不可逆性,通常用於確保資訊傳輸完整一致
因其不可逆性,所以只有加密的函式,沒有解密的函式

DES 加解密演算法

DES 加密法於 1977 年被聯邦政府列為數據加密標準
其加解密速度非常快速,但因為 56 位元金鑰過短
很有可能於 24 小時內被破解
如果需要安全一點的加密方式,可以考慮改用 AES 機制
AES 語法與 DES 大致相同,只在加解密的金鑰 KEY 及 IV 長度不同
加密及解碼需使用相同的金鑰

RSA 加解密演算法

RSA 是一種非對稱性加密演算法,其原理是以公鑰及私鑰來處理加解密
簡單來說,公鑰可以提供給任何需要加密的人,但是私鑰必須妥善保存
加密時以公鑰處理即可,但解密必須有私鑰

在 .NET Framework 中公私鑰可以 xml 及 RSAParameters 類別型態存在
而金鑰產生最簡單的方式是由 RSACryptoServiceProvider 類別來產生
每次初始化 RSACryptoServiceProvider 類別時即會亂數產生一組金鑰

加解密時只要使用同一組金鑰 (公私鑰) 即可

7 意見:

匿名 提到...

這篇文章非常的實用,感謝你提供了這麼多種使用C#的加密程式碼,C#高手喔~

匿名 提到...

真的很厲害,這些加密的方法很需要說
現在還有三重資料加密標準 (TripleDES)
若大大有空也交一下吧 !! 謝囉 ~~

久城 提到...
作者已經移除這則留言。
匿名 提到...

請問RSA的C#專案要開哪個把程式碼貼上去??

Kenny 提到...

請問上面提到的RSA是多少位元的加/解密呢?

希望的天空 提到...

用 DES 加解密演算法
解密後中文的字串都變成 "???"
是不能加密中文字嗎?

Kenny 提到...

To 希望的天空:
當然可以了。重點在編碼的方式,Encoding.ASCII會造成這個問題,換成其他的(例如Encoding.UTF8)即可。

可參考
http://kennyshu.blogspot.com/2009/04/tripledes-string-encryptiondecryption.html