asp.net 加密函數(shù) .net rsa加密
加密是我們實(shí)際應(yīng)用中確保數(shù)據(jù)安全的重要手段。在使用ASP之前,MD5和SHA1算法可以用于數(shù)據(jù)加密。這兩種算法雖然快速有效,但無法反向計(jì)算加密的密文,即解密。因此需要對數(shù)據(jù)進(jìn)行解密的地方,這兩種方法都不太適合。當(dāng)然,您也可以自己編寫適用的加密和解密程序,但這對編寫者的數(shù)學(xué)水平有很高的要求,普通人很難做到。
現(xiàn)在,伴隨著ASP.Net的推出,徹底改變了以前ASP下的編程模式??梢允褂?Net 在Framework中,類提供加密服務(wù),以確保數(shù)據(jù)安全。RSA算法是目前應(yīng)用較為廣泛的加密方法。在.Net 與RSA加密技術(shù)相關(guān)的Framework主要有兩類:RSA RSACryptoServiceProvider類別 類。RSA按照MSDN的說法 類是“表示 RSA 所有算法的實(shí)現(xiàn)都是從中繼承的基類”,而RSACryptoServiceProvider “使用加密服務(wù)提供程序” (CSP) 提供的 RSA 不對稱加密和解密算法的實(shí)現(xiàn)。另外,“表示” RSA RSAParameters的算法標(biāo)準(zhǔn)參數(shù) 結(jié)構(gòu)也很重要,它保存了RSA算法的參數(shù)。
因?yàn)橛泻芏嚓P(guān)于RSA算法原理的文章或者書籍,可以參考一下,這里就不重復(fù)了。讓我們重點(diǎn)介紹一下如何在ASP中使用。.在Net中獲得RSA加密。
生成RSA參數(shù):RSA參數(shù)類型就是上面提到的RSAParameters。 結(jié)構(gòu),查看MSDN就知道它包含了D。、DP、DQ、Exponent、InverseQ、Modulus、P、Q八字段。只需Exponent和Modulus2個(gè)值進(jìn)行加密,就可以看作是公鑰。所有字段都需要解密,可以看作是私鑰。以下程序顯示了如何生成RSA2參數(shù):
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
RSAParameters rsaParamsExcludePrivate=rsa.ExportParameters(false);
RSAParameters rsaParamsIncludePrivate=rsa.ExportParameters(true);
ExportParameterserserviceProvider類的RSACryptoServiceProvider類(bool)該方法用于導(dǎo)出RSA參數(shù),true表示導(dǎo)出上述八個(gè)字段的“私鑰”,false表示導(dǎo)出“公鑰”。
使用RSA參數(shù)進(jìn)行加密解密:在這一步中,需要將上述兩個(gè)參數(shù)導(dǎo)入RSACryptoServiceProvider類對象,然后使用它進(jìn)行數(shù)據(jù)加密。下面的代碼顯示,我們可以寫一個(gè)函數(shù)來完成加密過程:
Public byte [ ] RSAEncrypt ( byte [ ] b)
{
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(rsaParamsExcludePrivate); //導(dǎo)入公鑰
byte [] EncryptedData=rsa.Encrypt(DataToEncrypt,false);
return EncryptedData;
}
只需將rsa解密即可.ImportParameters(rsaParamsExcludePrivate)換為rsa.ImportParameters(rsaParamsExcludePrivate),只需將Encrypt換成Decrypt即可。
RSA參數(shù)的存儲和載入:RSA參數(shù)可以保存為XML格式,下面的代碼反映了如何保存和載入(只列出關(guān)鍵部分)
儲存:
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
StreamWriter writer=new StreamWriter(@"d:\PublicAndPrivateKey.xml");
string PPKeyXml=rsa.ToXmlString(true);//存儲私鑰
writer.Write(PPKeyXml);
writer.Close();
writer=new StreamWriter(@"d:\PublicKey.xml");
string PKeyXml=rsa.ToXmlString(false);//存儲公鑰
writer.Write(PKeyXml);
writer.Close();
讀?。?br>
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
StreamReader reader=new StreamReader(@"d:\PublicKey.xml");
string PKey=reader.ReadToEnd();
rsa.FromXmlString(PKey);
reader.Close();
StreamReader reader=new StreamReader(@"d:\PublicAndPrivateKey.xml");
string PPKey=reader.ReadToEnd();
reader.Close();
類似于ExportParameters方法的ToXmlString,false表示存儲“公鑰”,true表示存儲“私鑰”。
上面是ASP.在Net中獲取RSA加密的主要方法。
本文僅代表作者觀點(diǎn),版權(quán)歸原創(chuàng)者所有,如需轉(zhuǎn)載請?jiān)谖闹凶⒚鱽碓醇白髡呙帧?/p>
免責(zé)聲明:本文系轉(zhuǎn)載編輯文章,僅作分享之用。如分享內(nèi)容、圖片侵犯到您的版權(quán)或非授權(quán)發(fā)布,請及時(shí)與我們聯(lián)系進(jìn)行審核處理或刪除,您可以發(fā)送材料至郵箱:service@tojoy.com