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();
}
}
}
對字符串進行加解密的常用方法-對初學者來說是個很好的入門
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
實現靜態頁面的一種非常簡單的方法
风雨潇潇
2020-06-14 14:40:46
Div彈出層-當鼠標移上去出現一個層,鼠標移開這個層消失的特效,大家可以直接拿去用
风雨潇潇
2018-09-04 02:24:27
SQL Server2005合併字段相同的項的實例應用
风雨潇潇
2018-09-04 02:24:27
常用的js與select的數據項的移入移除
风雨潇潇
2018-09-04 02:24:27
MySql常用時間查詢簡單格式化
风雨潇潇
2018-09-04 02:24:27
asp.net常用下載的方法
风雨潇潇
2018-09-04 02:24:27