對字符串進行加解密的常用方法-對初學者來說是個很好的入門

 using System;
using System.Collections.Generic;
using System.Text;
using System.Security.Cryptography;
using System.IO;
///////////////////////////////////
//////對字符串加密的思想:利用加解密類DESCryptoServiceProvider類
/////並結合CryptoStram內存流對輸入的字符串進行加解密
////注意加密的密鑰和字符串都要先轉換爲字節數組,加密密鑰也要轉換爲字節數組
namespace ConsoleApplication1
{
    /// <summary>
    /// 對字符串實現加解密
    /// </summary>
    class Edstr
    {
        static string encryptKey = "Oyea"; //加密密鑰
        static void Main(string[] args)
        {
            Console.WriteLine("請您輸入字符串:");
            string strName = Console.ReadLine();
            //DESCryptoServiceProvider加解密類對象
            //並結合CryptoStream內存流對輸入的字符串進行加解祕
            DESCryptoServiceProvider descsp = new DESCryptoServiceProvider();
            //定義字節數組來存放密鑰
           byte[] key = Encoding.Unicode.GetBytes(encryptKey);
           //定義字節數組來存放加密的字符串
           byte[] data = Encoding.Unicode.GetBytes(strName);
           MemoryStream ms = new MemoryStream();
           CryptoStream cs = new CryptoStream(ms, descsp.CreateEncryptor(key, key), CryptoStreamMode.Write);
           cs.Write(data, 0, data.Length);//像加密流中寫入數據
           cs.FlushFinalBlock();//釋放加密流
           string names = Convert.ToBase64String(ms.ToArray());//ToArray():是把流轉換爲字節數組
           Console.WriteLine("加密後的字符串爲:" + names);
           //定義字節數組來存放需要解密的字符串
            byte[] data2 = Convert.FromBase64String(names);
            ms=new MemoryStream();
           //使用內存流解密
           cs = new CryptoStream(ms, descsp.CreateDecryptor(key, key), CryptoStreamMode.Write);
           cs.Write(data2, 0, data2.Length); //像解密流中寫入數據
           cs.FlushFinalBlock();
           string strde = Encoding.Unicode.GetString(ms.ToArray());
           Console.WriteLine("解密後的字符串爲:" + strde);
           ms.Close();
           cs.Close();
           Console.ReadLine();
        }
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章