C#一个字符串的加密与解密

来源:互联网 发布:模拟炒汇软件 编辑:程序博客网 时间:2024/05/16 07:43
设计应用程序时,为了防止一些敏感信息的泄露,通常需要对这些信息进行加密。以用户的登录密码为例,如果密码以明文的形式存储在数据表中,很容易就会被人发现;相反,如果密码以密文的形式储存,即使别人从数据表中发现了密码,也是加密之后的密码,根本不能使用。通过对密码进行加密,能够极大地提高系统的保密性。
?
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Security.Cryptography;
usingSystem.IO;
  
namespaceConsoleApplication1
{
    classProgram
    {
        staticstring encryptKey = "Oyea";   //定义密钥 
  
        #region 加密字符串 
        /// <summary> /// 加密字符串  
        /// </summary> 
        /// <param name="str">要加密的字符串</param> 
        /// <returns>加密后的字符串</returns> 
        staticstring Encrypt(stringstr) 
        {   
            DESCryptoServiceProvider descsp =newDESCryptoServiceProvider();   //实例化加/解密类对象  
    
            byte[] key = Encoding.Unicode.GetBytes(encryptKey);//定义字节数组,用来存储密钥   
   
            byte[] data = Encoding.Unicode.GetBytes(str);//定义字节数组,用来存储要加密的字符串 
     
            MemoryStream MStream =newMemoryStream(); //实例化内存流对象     
  
            //使用内存流实例化加密流对象  
            CryptoStream CStream =newCryptoStream(MStream, descsp.CreateEncryptor(key, key), CryptoStreamMode.Write);    
  
            CStream.Write(data, 0, data.Length); //向加密流中写入数据     
  
            CStream.FlushFinalBlock();             //释放加密流     
  
            returnConvert.ToBase64String(MStream.ToArray());//返回加密后的字符串 
        
        #endregion
  
        #region 解密字符串  
        /// <summary> 
        /// 解密字符串  
        /// </summary> 
        /// <param name="str">要解密的字符串</param> 
        /// <returns>解密后的字符串</returns> 
        staticstring Decrypt(stringstr) 
        {     
            DESCryptoServiceProvider descsp =newDESCryptoServiceProvider();   //实例化加/解密类对象   
     
            byte[] key = Encoding.Unicode.GetBytes(encryptKey);//定义字节数组,用来存储密钥   
    
            byte[] data = Convert.FromBase64String(str);//定义字节数组,用来存储要解密的字符串 
      
            MemoryStream MStream =newMemoryStream(); //实例化内存流对象     
   
            //使用内存流实例化解密流对象      
            CryptoStream CStream =newCryptoStream(MStream, descsp.CreateDecryptor(key, key), CryptoStreamMode.Write);  
   
            CStream.Write(data, 0, data.Length);     //向解密流中写入数据    
  
            CStream.FlushFinalBlock();              //释放解密流     
  
            returnEncoding.Unicode.GetString(MStream.ToArray());       //返回解密后的字符串 
        
        #endregion
  
        staticvoid Main(string[] args)
        {
            Console.Write("请输入要加密的字符串:");  //提示输入字符串     
            Console.WriteLine();                 //换行输入  
            stringstr = Console.ReadLine();     //记录输入的字符串     
            stringstrNew = Encrypt(str);              //加密字符串     
            Console.WriteLine("加密后的字符串:"+ strNew);  //输出加密后的字符串     
            Console.WriteLine("解密后的字符串:"+ Decrypt(strNew)); //解密字符串并输出    
            Console.ReadLine();
        }
    }
}
原创粉丝点击