所属类别:技术博客
文章作者:princelintb
特别推荐:免费发布信息 承包关键词~~抢爆了!HOT!
以下是关于对称加密算法的C#实现代码,大家可以根据需要更改不同的算法,文中以Rijndael算法为例:using System;using System.IO;using System.Security.Cryptography;using System.Text;namespace DataCrypto{/// /// 对称加密算法类/// public class SymmetricMethod{private SymmetricAlgorithm mobjCryptoService;private string Key;/// /// 对称加密类的构造函数/// public SymmetricMethod(){mobjCryptoService = new RijndaelManaged();Key = "Guz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";}/// /// 获得密钥/// /// 密钥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);}/// /// 获得初始向量IV/// /// 初试向量IVprivate 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);}/// /// 加密方法/// /// 待加密的串/// 经过加密的串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);}/// /// 解密方法/// /// 待解密的串/// 经过解密的串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();}}}发表于 @ 2006年09月20日 15:56:00评论(loading...AddFeedbackCountStack("1253772"))编辑新一篇:求N之内的所有质数旧一篇:客户端跟服务器效对编程
相关信息· 亲身体验 升级Linux系统内核完全过程
· 禁止其它人使用某个软件的小技巧
· java script编程起步(第三课)
· 自己写的玩的东西,通过网络建立一个ejb的框架,并进行weblogic的部署
80717
40246
