首    页 界面/窗口 网络/通讯 数据库 组件开发 图像/多媒体 NET/Web 其它技术 源码下载 资料下载 软件共享 软件外包 曲艺杂谈
栏目导航:  首    页  |  其它技术  |  加密解密  


利用DotNET密码系统之一的DES对称加密算法保证数据安全


原作者:不详    源出处:CSDN   发布者:施昌权    发布类型:转载    发布日期:2008-12-02


//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));
            }

      }
}


关于我们 版权声明 广告服务 联系我们 友情链接 加入收藏
站长:施昌权    Email:scq2099yt@163.com    MSN:scq2099yt@live.cn    QQ:14046300    本站QQ群:67202409
Copyright © 2008     卓为VC(www.joyvc.cn)    All Rights Reserved    建议分辨率 1024×768
本站由施昌权制作维护
京ICP备09012297号