如何使用 Visual C#加密和解密文件

 我来答
魔法软糖™
2016-12-05 · TA获得超过838个赞
知道小有建树答主
回答量:822
采纳率:94%
帮助的人:151万
展开全部

软糖来回答吧。

先上代码

 /// <summary>
        /// 加密数据(从内存到文件)
        /// </summary>
        public static void Encrypt()
        {
            //创建一个文件对象,文件的模式是创建新文件,文件的访问权限是可写!
            FileStream fs = new FileStream(@"J:\works\Demo.txt", FileMode.Create, FileAccess.Write);
            Console.WriteLine("请输入你想要进行加密的字符串:");
            string Input = Console.ReadLine();
            //将字符串转换成字节
            byte[] YourInputStorage = System.Text.Encoding.UTF8.GetBytes(Input);
            //创建一个DES算法的加密类
            DESCryptoServiceProvider MyServiceProvider = new DESCryptoServiceProvider();
            //从DES算法的加密类对象的CreateEncryptor方法,创建一个加密转换接口对象
            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 Decrypt()
        {
            FileStream fs = new FileStream("Demo.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));
        }

主要就是System.Security.Cryptography命名空间和System.IO命名空间。


如满意,请采纳,谢谢。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式