對(duì)稱加密算法實(shí)現(xiàn)ASP.NET數(shù)據(jù)加密
作者:佚名
對(duì)稱加密算法實(shí)現(xiàn)ASP.NET數(shù)據(jù)加密是如何執(zhí)行的呢?都有哪些類被使用?那么本文就向你介紹這些相關(guān)的內(nèi)容。
對(duì)稱加密算法實(shí)現(xiàn)ASP.NET數(shù)據(jù)加密是如何的呢?那么下面就想大家詳細(xì)說(shuō)明:
以下是關(guān)于對(duì)稱加密算法的C#實(shí)現(xiàn)ASP.NET數(shù)據(jù)加密代碼,大家可以根據(jù)需要更改不同的算法,文中以Rijndael算法為例:
- using System;
- using System.IO;
- using System.Security.Cryptography;
- using System.Text;
- namespace DataCrypto
- {
- /// ﹤summary﹥
- /// ASP.NET數(shù)據(jù)加密之對(duì)稱加密算法類
- /// ﹤/summary﹥
- public class SymmetricMethod
- {
- private SymmetricAlgorithm mobjCryptoService;
- private string Key;
- /// ﹤summary﹥
- /// ASP.NET數(shù)據(jù)加密之對(duì)稱加密類的構(gòu)造函數(shù)
- /// ﹤/summary﹥
- public SymmetricMethod()
- {
- mobjCryptoService = new RijndaelManaged();
- Key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";
- }
- /// ﹤summary﹥
- ///ASP.NET數(shù)據(jù)加密之獲得密鑰
- /// ﹤/summary﹥
- /// ﹤returns﹥密鑰﹤/returns﹥
- private byte[] GetLegalKey()
- {
- string sTemp = Key;
- mobjCryptoService.GenerateKey();
- byte[] bytTemp = mobjCryptoService.Key;
- int KeyLength = bytTemp.Length;
- if (sTemp.Length ﹥ KeyLength)
- sTemp = sTemp.Substring(0, KeyLength);
- else if (sTemp.Length ﹤ KeyLength)
- sTemp = sTemp.PadRight(KeyLength, ' ');
- return ASCIIEncoding.ASCII.GetBytes(sTemp);
- }
- /// ﹤summary﹥
- /// ASP.NET數(shù)據(jù)加密之獲得初始向量IV
- /// ﹤/summary﹥
- /// ﹤returns﹥初試向量IV﹤/returns﹥
- private byte[] GetLegalIV()
- {
- string sTemp = "E4ghj*Ghg7!rNIfb&95GUY86GfghUb#er57HBh(u%g6HJ($jhWk7&!hg4ui%$hjk";
- mobjCryptoService.GenerateIV();
- byte[] bytTemp = mobjCryptoService.IV;
- int IVLength = bytTemp.Length;
- if (sTemp.Length ﹥ IVLength)
- sTemp = sTemp.Substring(0, IVLength);
- else if (sTemp.Length ﹤ IVLength)
- sTemp = sTemp.PadRight(IVLength, ' ');
- return ASCIIEncoding.ASCII.GetBytes(sTemp);
- }
- /// ﹤summary﹥
- /// ASP.NET數(shù)據(jù)加密之加密方法
- /// ﹤/summary﹥
- /// ﹤param name="Source"﹥待加密的串﹤/param﹥
- /// ﹤returns﹥經(jīng)過(guò)加密的串﹤/returns﹥
- public string Encrypto(string Source)
- {
- byte[] bytIn = UTF8Encoding.UTF8.GetBytes(Source);
- MemoryStream ms = new MemoryStream();
- mobjCryptoService.Key = GetLegalKey();
- mobjCryptoService.IV = GetLegalIV();
- ICryptoTransform encrypto = mobjCryptoService.CreateEncryptor();
- CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Write);
- cs.Write(bytIn, 0, bytIn.Length);
- cs.FlushFinalBlock();
- ms.Close();
- byte[] bytOut = ms.ToArray();
- return Convert.ToBase64String(bytOut);
- }
- /// ﹤summary﹥
- /// ASP.NET數(shù)據(jù)加密之解密方法
- /// ﹤/summary﹥
- /// ﹤param name="Source"﹥待解密的串﹤/param﹥
- /// ﹤returns﹥經(jīng)過(guò)解密的串﹤/returns﹥
- public string Decrypto(string Source)
- {
- byte[] bytIn = Convert.FromBase64String(Source);
- MemoryStream ms = new MemoryStream(bytIn, 0, bytIn.Length);
- mobjCryptoService.Key = GetLegalKey();
- mobjCryptoService.IV = GetLegalIV();
- ICryptoTransform encrypto = mobjCryptoService.CreateDecryptor();
- CryptoStream cs = new CryptoStream(ms, encrypto, CryptoStreamMode.Read);
- StreamReader sr = new StreamReader(cs);
- return sr.ReadToEnd();
- }
- }
- }
對(duì)稱加密算法實(shí)現(xiàn)ASP.NET數(shù)據(jù)加密的相關(guān)內(nèi)容就向你介紹到這里,希望通過(guò)介紹是你對(duì)對(duì)稱加密算法實(shí)現(xiàn)ASP.NET數(shù)據(jù)加密有所了解。
【編輯推薦】
責(zé)任編輯:仲衡
來(lái)源:
酷網(wǎng)學(xué)院