AES/DES c加解密收藏

#1楼 得分:0回复于:2009-12-26 15:37:26

加密有很多种方法.同时C#也提供了很多加密方法.你需要加密和解密在加密算法上需要使用对称加密.我给你提供一个简单的算法.在保存的时候可以使用二进制的方式来保存到文件.
C# code
        
        
using System; using System.IO; using System.Text; using System.Security.Cryptography; namespace Tools { /// <summary> /// 加密 /// </summary> public class AES { // 默认密钥向量 private static byte [] Keys = { 0x18 , 0x72 , 0x65 , 0x79 , 0x6F , 0x57 , 0x6D , 0x79 , 0x35 , 0x6E , 0x6F , 0x77 , 0x6D , 0x61 , 0x6E , 0x3F }; /// <summary> /// 设置加密密匙向量 /// </summary> public static byte [] IV { set { Keys = value; } get { return Keys; } } /// <summary> /// AES加密数据 /// </summary> /// <param name="encryptString"> 需要加密的数据 </param> /// <param name="encryptKey"> 加密密匙 </param> /// <returns> 加密后的数据 </returns> public static string Encode( string encryptString, string encryptKey) { encryptKey = Utils.GetSubString(encryptKey, 32 , "" ); encryptKey = encryptKey.PadRight( 32 , ' ' ); RijndaelManaged rijndaelProvider = new RijndaelManaged(); rijndaelProvider.Key = Encoding.UTF8.GetBytes(encryptKey.Substring( 0 , 32 )); rijndaelProvider.IV = IV; ICryptoTransform rijndaelEncrypt = rijndaelProvider.CreateEncryptor(); byte [] inputData = Encoding.UTF8.GetBytes(encryptString); byte [] encryptedData = rijndaelEncrypt.TransformFinalBlock(inputData, 0 , inputData.Length); return Convert.ToBase64String(encryptedData); } /// <summary> /// AES解密 /// </summary> /// <param name="decryptString"> 需要解密的数据 </param> /// <param name="decryptKey"> 加密时用的加密密匙 </param> /// <returns> 解密后的数据 </returns> public static string Decode( string decryptString, string decryptKey) { try { decryptKey = Utils.GetSubString(decryptKey, 32 , "" ); decryptKey = decryptKey.PadRight( 32 , ' ' ); RijndaelManaged rijndaelProvider = new RijndaelManaged(); rijndaelProvider.Key = Encoding.UTF8.GetBytes(decryptKey); rijndaelProvider.IV = IV; ICryptoTransform rijndaelDecrypt = rijndaelProvider.CreateDecryptor(); byte [] inputData = Convert.FromBase64String(decryptString); byte [] decryptedData = rijndaelDecrypt.TransformFinalBlock(inputData, 0 , inputData.Length); return Encoding.UTF8.GetString(decryptedData); } catch { return "" ; } } } /// <summary> /// 加密 /// </summary> public class DES { // 默认密钥向量 private static byte [] Keys = { 0x12 , 0x34 , 0x56 , 0x78 , 0x90 , 0xAB , 0xCD , 0xEF }; /// <summary> /// 设置加密密匙向量 /// </summary> public static byte [] IV { set { Keys = value; } get { return Keys; } } /// <summary> /// DES加密字符串 /// </summary> /// <param name="encryptString"> 待加密的字符串 </param> /// <param name="encryptKey"> 加密密钥,要求为8位 </param> /// <returns> 加密成功返回加密后的字符串,失败返回源串 </returns> public static string Encode( string encryptString, string encryptKey) { encryptKey = Utils.GetSubString(encryptKey, 8 , "" ); encryptKey = encryptKey.PadRight( 8 , ' ' ); byte [] rgbKey = Encoding.UTF8.GetBytes(encryptKey.Substring( 0 , 8 )); byte [] rgbIV = IV; byte [] inputByteArray = Encoding.UTF8.GetBytes(encryptString); DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0 , inputByteArray.Length); cStream.FlushFinalBlock(); return Convert.ToBase64String(mStream.ToArray()); } /// <summary> /// DES解密字符串 /// </summary> /// <param name="decryptString"> 待解密的字符串 </param> /// <param name="decryptKey"> 解密密钥,要求为8位,和加密密钥相同 </param> /// <returns> 解密成功返回解密后的字符串,失败返源串 </returns> public static string Decode( string decryptString, string decryptKey) { try { decryptKey = Utils.GetSubString(decryptKey, 8 , "" ); // ""; // decryptKey = decryptKey.PadRight( 8 , ' ' ); byte [] rgbKey = Encoding.UTF8.GetBytes(decryptKey); byte [] rgbIV = IV; byte [] inputByteArray = Convert.FromBase64String(decryptString); DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider(); MemoryStream mStream = new MemoryStream(); CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write); cStream.Write(inputByteArray, 0 , inputByteArray.Length); cStream.FlushFinalBlock(); return Encoding.UTF8.GetString(mStream.ToArray()); } catch { return "" ; } } } /// <summary> /// MD5加密 /// </summary> public class MD5EnCode { public static string Encode( string Pwd) { MD5 md5 = new MD5CryptoServiceProvider(); byte [] data = System.Text.Encoding.Default.GetBytes(Pwd ); byte [] result = md5.ComputeHash(data); String ret = "" ; for ( int i = 0 ; i < result.Length; i ++ ) ret += result[i].ToString( " x " ).PadLeft( 2 , ' 0 ' ); return ret; } } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值