首先必须使用命名空间 System.Security.Cryptography;其中包含实现安全的类,如加密解密,管理密钥,验证数据完整性等等。在加密和解密本地文档时使用Rijndael对称算法。而System.IO则是用于访问文件和创建访问文件数据流等。
设计的窗体界面如下图所示,提前新建一个txt文本文件作为所要选择的文件,此代码可对加密后的文件进行保存和删除源文件。

using System.IO;
namespace 文本文件加密与解密
{public partial class Form1 : Form{public Form1(){InitializeComponent();}//选择加密解密文件路径private void button3_Click(object sender, EventArgs e){openFileDialog1.Filter = "文本文件|*.txt|*.*|*.*";//筛选文本文件if (openFileDialog1.ShowDialog() == DialogResult.OK){textBox1.Text = openFileDialog1.FileName;//获取对话框文件名}  }//加密private void button5_Click(object sender, EventArgs e){if (textBox1.Text == ""){ MessageBox.Show("请选择要加密的文件"); }else{try{string strPath = textBox1.Text;//加密文件的路径int intLent = strPath.LastIndexOf("\\") + 1;//设置截取字符串的起始位置int intLong = strPath.Length;//设置截取长度string strName = strPath.Substring(intLent, intLong - intLent);//要加密的文件名称int intTxt = strName.LastIndexOf(".");int intTextLeng = strName.Length;//截取长度string strTxt = strName.Substring(intTxt, intTextLeng - intTxt);//取出文件的扩展名strName = strName.Substring(0, intTxt);//加密后的文件名及路径string strOutName = strPath.Substring(0, strPath.LastIndexOf("\\") + 1) + strName + "Out" + strTxt;byte[] key = { 24, 55, 102, 24, 98, 26, 67, 29, 84, 19, 37, 118, 104, 85, 121, 27, 93, 86, 24, 55, 102, 24, 98, 26, 67, 29, 9, 2, 49, 69, 73, 92 };byte[] IV = { 22, 56, 82, 77, 84, 31, 74, 24, 55, 102, 24, 98, 26, 67, 29, 99 };//RijndaelManaged 该类是访问 System.Security.Cryptography.Rijndael 对称加密算法的托管版本RijndaelManaged myRijndael = new RijndaelManaged();FileStream fsOut = File.Open(strOutName, FileMode.Create, FileAccess.Write);FileStream fsIn = File.Open(strPath, FileMode.Open, FileAccess.Read);//写入加密文本文件CryptoStream csDecrypt = new CryptoStream(fsOut, myRijndael.CreateEncryptor(key, IV), CryptoStreamMode.Write);//读加密文本BinaryReader br = new BinaryReader(fsIn);//从要加密流读取文件内容csDecrypt.Write(br.ReadBytes((int)fsIn.Length), 0, (int)fsIn.Length);csDecrypt.FlushFinalBlock();csDecrypt.Close();fsIn.Close();fsOut.Close();if (MessageBox.Show(strOutName, "提示:加密成功!加密后的文件名及路径为:\n" + "是否册除源文件", MessageBoxButtons.YesNo) == DialogResult.Yes){File.Delete(strPath);textBox1.Text = "";}else{ textBox1.Text = ""; }}catch (Exception ee){MessageBox.Show(ee.Message);}}}//解密private void button4_Click(object sender, EventArgs e){if (textBox1.Text == ""){MessageBox.Show("请选择要解密的文件路径");}else{string strPath = textBox1.Text;//解密文件的路径int intLent = strPath.LastIndexOf("\\") + 1;//设置截取字符串的起始位置int intLong = strPath.Length;//设置截取长度string strName = strPath.Substring(intLent, intLong - intLent);//要解密的文件名称int intTxt = strName.LastIndexOf(".");int intTextLeng = strName.Length; strName = strName.Substring(0, intTxt);if (strName.LastIndexOf("Out") != -1){strName = strName.Substring(0, strName.LastIndexOf("Out"));}else{strName = strName + "In";}//加密后的文件名及路径string strInName = strPath.Substring(0, strPath.LastIndexOf("\\") + 1) + strName + ".txt";//加密文件密钥byte[] key = { 24, 55, 102, 24, 98, 26, 67, 29, 84, 19, 37, 118, 104, 85, 121, 27, 93, 86, 24, 55, 102, 24, 98, 26, 67, 29, 9, 2, 49, 69, 73, 92 };byte[] IV ={ 22, 56, 82, 77, 84, 31, 74, 24, 55, 102, 24, 98, 26, 67, 29, 99 };RijndaelManaged myRijndael = new RijndaelManaged();FileStream fsOut = File.Open(strPath, FileMode.Open, FileAccess.Read);CryptoStream csDecrypt = new CryptoStream(fsOut, myRijndael.CreateDecryptor(key, IV), CryptoStreamMode.Read);StreamReader sr = new StreamReader(csDecrypt);//把文件读出来StreamWriter sw = new StreamWriter(strInName);//解密后文件写入一个新的文件sw.Write(sr.ReadToEnd());sw.Flush();sw.Close();sr.Close();fsOut.Close();if (MessageBox.Show(strInName, "提示:解密成功!解密后的文件名及路径为:" + "是否册除源文件", MessageBoxButtons.YesNo) == DialogResult.Yes){//删除指定文件,清除文本框File.Delete(strPath);textBox1.Text = "";}else{textBox1.Text = "";}}}}
}

文本文件的加密与解密相关推荐

  1. base64编码 vba_VB VBA ASP 可通用的基于Base64进行加密和解密的函数

    VB VBA ASP 可通用的基于Base64进行加密和解密的函数 可用于Access VBA 以及 Excel VBA对字符串 数据甚至文本文件进行加密和解密,以保证您数据的安全. 先创建一个模块, ...

  2. 文本文件加密和解密_解密文本见解和相关业务用例

    文本文件加密和解密 The objective is to provide crisp information about possibilities in Text analytics and ho ...

  3. Java课程设计——文本文件加密与解密软件设计与实现

    源文件链接: Java文本文件加密与解密-其它文档类资源-CSDN文库 摘要 随着现代网络技术的飞速发展,人们的个人信息.文件传递以及电子商务等方面都需要大力的保护,文件加密技术也应运而生.本次使用J ...

  4. 数字证书应用综合揭秘(包括证书生成、加密、解密、签名、验签)

    引言 数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件.为现实网络安全化标准如今大部分的 B2B.B2C.P2P.O2O 等商业网站含有重要企业资料个人资料的信息资信网站 ...

  5. 《软件加密与解密》第三版学习日志二

    一 常见软件保护技术 1.序列保护方式 注册过程一般是用户把自己的私人信息,如用户名.邮件地址.及其特征码等,告诉软件公司,软件公司根据用户的信息利用预先写好的一个计算注册程序,称为注册机keygen ...

  6. java中完成md5加密解密_java实现md5加密解密 notNET中加密和解密的实现方法

    java实现md5加密解密 notNET中加密和解密的实现方法 亦或是旅途风光 7-14 1918℃ 22 [ ee21.cn - ASP.NET ] .NET将原来独立的API和SDK合并到一个框架 ...

  7. Windows中EFS加密及解密应用

    Windows中EFS加密及解密应用<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office&q ...

  8. python输出字体的大小_Python密码学编程:文件的加密与解密

    在之前的章节中,编写的程序只能操作较少的信息,这些信息往往是以字符串的形式直接写在代码中的.但本章中的程序可以对整个文件进行加密和解密,文件的大小可以包括成千上万个字符. 本章要点 open()方法. ...

  9. Java加密与解密的艺术~AES-GCM-NoPadding实现

    来源:Java AES加密和解密_一名可爱的技术搬运工-CSDN博客 高级加密标准 (AES,Rijndael)是一种分组密码加密和解密算法,是全球使用最广泛的加密算法. AES使用128.192或2 ...

最新文章

  1. python求分段函数值_高中数学知识点整理(2)——函数概念及基本初等函数篇(上)...
  2. GIVE_A_TRY.exe 逆向(NCK逆向初级第9,10,11课作业)
  3. 27 网络通信协议 udp tcp
  4. 自学linux指令分析-find
  5. 构建高可用服务器之 Keepalive参数详解
  6. JavaScript 中的代码小技巧
  7. java多个类调用_JAVA问题总结之15-多个类之间的调用
  8. 信息学奥赛一本通(1258:【例9.2】数字金字塔)
  9. keras faster物体检测_全网 | 深度学习目标检测算法(精选12篇)
  10. Redis,真的不完美!
  11. Spark入门实战WordCount
  12. java javaw 命令区别_java 和javaw 的区别
  13. java正整数分解因数_java如何将一个正整数分解质因数
  14. 考研计划安排表怎么在手机便签上记录?
  15. 【GCC编译优化系列】宏定义名称与函数同名是一种什么骚操作?
  16. html5圆圈闪烁,html5 css3圆形波浪百分比加载动画特效
  17. offsetParent和parentElement的区别
  18. 待飞的蒲公英---拔剑四顾心茫然
  19. 几种实现动画效果的优化方法(will-change属性的使用)
  20. python 通过调取百度接口进行图片OCR文字识别 高识别率

热门文章

  1. linux如何判断数组是否为空,Linux fgetcsv取得的数组元素为空字符串的解决方法
  2. 中国最好的职业TOP10
  3. Python的namedtuple使用详解
  4. html 导出excel 列被合并,前端实现导出excel单元格合并和调整样式
  5. c语言线程邮箱解决资源竞争问题
  6. ubuntu 8.10安装配置经验(转载)
  7. 无线路由器---基本知识
  8. VMware Workstation安装Win7系统
  9. python 结合百度识图识别文字
  10. 明厨亮灶监控系统解决方案,看得见的食品安全