C#中用RSA算法生成公鑰和私鑰


我這里主要是為了一個序列號在線生成,注冊軟件的服務提供公鑰和私鑰,用到了RSA算法。此為數據加密的應用,RSA算法另外一個作用是數字簽名,先不研究。

知識儲備:

什么是非對稱加密?所謂的非對稱加密,就是指加密和解密使用不同的密鑰的一類加密算法。這類加密算法通常有兩個密鑰A和B,使用密鑰A加密數據得到的密文,只有密鑰B可以進行解密操作(即使密鑰A也無法解密),相反,使用了密鑰B加密數據得到的密文,只有密鑰A可以解密。這兩個密鑰分別稱為私鑰和公鑰,顧名思義,私鑰就是你個人保留,不能公開的密鑰,而公鑰則是公開給加解密操作的另一方的。根據不同用途,對數據進行加密所使用的密鑰也不相同(有時用公鑰加密,私鑰解密;有時相反用私鑰加密,公鑰解密)。非對稱加密的代表算法是RSA算法。

使用場景:

參考http://www.cnblogs.com/happinessCodes/archive/2010/07/27/1786404.html

如果我不想讓除了接收方以外的其他人,知道我發送的數據的內容的話,需要用哪種密鑰對數據進行加密?如果我使用私鑰加密,那么根據非對稱加密的原理,接收方需要使用公鑰來解密,而公鑰我已經公開給接收方了,這個方案似乎是可行的,可是這樣做問題就出現在公鑰上了。在非對稱加密中,公鑰的公開不僅僅指對接收方的公開,而是指這個密鑰徹底的公開,任何人需要都可以得到,這樣的話你發送的數據就沒有任何秘密可言了。反過來,如果我使用公鑰對數據加密,那么對於接收方來說就需要使用私鑰進行數據解密,由於私鑰只保存在接收方手中,這樣其他人就不會得到數據的內容了。這樣看來,在非對稱加密中,如果需要保護你的數據不被第三者得到,密鑰需要由接收方產生,然后接收方將公鑰公開出去,發送方使用這個公開的公鑰對數據進行加密后傳輸給接收方,接收方使用自己的私鑰進行解密,從而保證了數據的安全性。所以非對稱加密又稱為公鑰加密。

關於RSA算法的細節,可以參考http://www.cnblogs.com/zhtxwd/archive/2012/02/09/2344154.html,事實上我也懶得去看那些數學運算,C#本身就已經提供了RSACryptoServiceProvider 類,能得到結果就好,費那事干嘛。就好像會開車的人不用明白車子是怎么運作的,一個道理。

RSACryptoServiceProvider類的使用可以參考MSDN,我這里只是最簡單的應用,同時生成了xml格式的密鑰和私鑰。

http://msdn.microsoft.com/zh-cn/library/system.security.cryptography.rsacryptoserviceprovider.aspx

說了半天,代碼如下:

 

using System;
 using System.IO;
 using System.Security.Cryptography;    //這個引用很重要,必須要有
 
 namespace CreateKey
 {
     class Program
     {
         static void Main(string[] args)
         {
             RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
             using (StreamWriter writer = new StreamWriter("PrivateKey.xml"))  //這個文件要保密...
             {
 
                 writer.WriteLine(rsa.ToXmlString(true));
 
             }
             using (StreamWriter writer = new StreamWriter("PublicKey.xml"))   
             {
 
                 writer.WriteLine(rsa.ToXmlString(false));            
 
             }
         }
     }
 
 }

編譯后是一個控制台文件,也沒考慮什么界面了,直接在同一目錄下生成PrivateKey.xml和PublicKey.xml

 

轉自:http://www.cnblogs.com/dream4u/archive/2012/04/21/2461437.html


免責聲明!

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



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