///////////////////////////////////////////////////////////// //Author: stardicky // //E-mail: [email protected] // //QQNumber: 9531511 // //CompanyName: Ezone International // //Class: HBS-0308 // //title: 利用DotNET密码系统保证数据安全 // ///////////////////////////////////////////////////////////// //注:利用DotNET密码系统之一的DES对称加密算法保证数据安全 // ///////////////////////////////////////////////////////////// using System; using System.IO; using System.Text; using System.Security.Cryptography; namespace EzoneInternationalSecurityCryptography { class EzoneSecurityCryptographyDemo { [STAThread] public static void Main(string[] args) { //加密数据(从内存到文件) EzoneEncryptorDemo(); //解密数据(从文件到内存) EzoneDecryptorDemo(); } /// <summary> /// 加密 /// </summary> public static void EzoneEncryptorDemo() { //创建一个文件对象,文件的模式是创建新文件,文件的访问权限是可写! FileStream fs=new FileStream("EzoneDemo.txt",FileMode.Create,FileAccess.Write); Console.WriteLine("请输入你想要进行加密的字符串:"); //输入你想要进行加密的字符串 string YourInput=Console.ReadLine(); //将字符串转换成字节 byte[] YourInputStorage=System.Text.Encoding.UTF8.GetBytes(YourInput); //创建一个DES算法的加密类 DESCryptoServiceProvider MyServiceProvider=new DESCryptoServiceProvider(); //从DES算法的加密类对象的CreateEncryptor方法,创建一个加密转换接口对象 //第一个参数的含义是:对称算法的机密密钥(长度为64位,也就是8个字节) // 可以人工输入,也可以随机生成方法是:MyServiceProvider.GenerateKey(); //第二个参数的含义是:对称算法的初始化向量(长度为64位,也就是8个字节) // 可以人工输入,也可以随机生成方法是:MyServiceProvider.GenerateIV(); ICryptoTransform MyTransform=MyServiceProvider.CreateEncryptor(new byte[]{100,110,120,130,100,110,120,130},new byte[]{100,110,120,130,100,110,120,130}); //CryptoStream对象的作用是将数据流连接到加密转换的流 CryptoStream MyCryptoStream=new CryptoStream(fs,MyTransform,CryptoStreamMode.Write); //将字节数组中的数据写入到加密流中 MyCryptoStream.Write(YourInputStorage,0,YourInputStorage.Length); //关闭加密流对象 MyCryptoStream.Close(); } /// <summary> /// 解密 /// </summary> public static void EzoneDecryptorDemo() { FileStream fs=new FileStream("EzoneDemo.txt",FileMode.Open,FileAccess.Read); DESCryptoServiceProvider MyServiceProvider=new DESCryptoServiceProvider(); //从DES算法的加密类对象的CreateEncryptor方法,创建一个解密转换接口对象 //[对称算法的机密密钥]必须是加密时候的[对称算法的机密密钥] //[对称算法的初始化向量]必须是加密时候的[对称算法的初始化向量] //如果不一样,则会抛出一个异常。 ICryptoTransform MyTransform=MyServiceProvider.CreateDecryptor(new byte[]{100,110,120,130,100,110,120,130},new byte[]{100,110,120,130,100,110,120,130}); CryptoStream MyCryptoStream=new CryptoStream(fs,MyTransform,CryptoStreamMode.Read); byte[] YourInputStorage=new byte[1000]; int len=MyCryptoStream.Read(YourInputStorage,0,YourInputStorage.Length); Console.WriteLine("你刚才输入的字符串是:"); Console.WriteLine(System.Text.Encoding.UTF8.GetString(YourInputStorage,0,len)); } } } |
本文地址:http://com.8s8s.com/it/it44986.htm