读书人

C# 字符串加密 解密 工具种

发布时间: 2012-08-30 09:55:54 作者: rapoo

C# 字符串加密 解密 工具类

?

?

?

?

using System;using System.Collections.Generic;using System.Text;using System.IO;using System.Security.Cryptography;namespace Ship.GlobalMethod{    public class SymmetricMethod    {        private SymmetricAlgorithm mobjCryptoService;        private string Key;        /// <summary>        /// 对称加密类的构造函数        /// </summary>        public SymmetricMethod()        {            mobjCryptoService = new RijndaelManaged();            Key = "jcsmkjGuz(%&hj7x89H$yuBI0456FtmaT5&fvHUFCy76*h%(HilJ$lhj!y6&(*jkP87jH7";        }        /// <summary>        /// 获得密钥        /// </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>        /// 获得初始向量IV        /// </summary>        /// <returns>初试向量IV</returns>        private byte[] GetLegalIV()        {            string sTemp = "jcsmkjE4ghj*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>        /// 加密方法        /// </summary>        /// <param name="Source">待加密的串</param>        /// <returns>经过加密的串</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>        /// 解密方法        /// </summary>        /// <param name="Source">待解密的串</param>        /// <returns>经过解密的串</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();        }    }}
?

?

读书人网 >C#

热点推荐