using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml.Linq; namespace XmlEncrypt
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} //Load Button
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog file = new OpenFileDialog();
file.Filter = "XML文件|*.xml";
file.RestoreDirectory = true; if (file.ShowDialog() == DialogResult.OK)
{
LoadXML(file.FileName.ToString());
}
} // Save Button
private void SaveButton_Click(object sender, EventArgs e)
{
OpenFileDialog file = new OpenFileDialog();
file.Filter = "XML文件|*.xml";
file.RestoreDirectory = true; if (file.ShowDialog() == DialogResult.OK)
{
SaveXML(file.FileName.ToString());
}
} private void LoadXML(string path)
{
XmlTextBox.Clear();
XmlTextBox.Text = DecrtyptLoadXML(path);
} private void SaveXML(string path) {
EncrtyptSaveXML(path);
} //保存加密文件
private void EncrtyptSaveXML(string xmlpath)
{
string xmlData = XmlTextBox.Text;
string xxx = Encrypt(xmlData);
StreamWriter writer;
writer = File.CreateText(xmlpath);
writer.Write(xxx);
writer.Close();
} //读取加密文件
public string DecrtyptLoadXML(string xmlpath) {
StreamReader sReader = File.OpenText(xmlpath);
string xmlData = sReader.ReadToEnd();
sReader.Close();
string xxx = Decrypt(xmlData);
return xxx;
} //加密
private string Encrypt(string toE)
{
if (KeyBox.Text != "")
{
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(KeyBox.Text);
RijndaelManaged rDel = new RijndaelManaged();
rDel.Key = keyArray;
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateEncryptor();
byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toE);
byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, , toEncryptArray.Length); return Convert.ToBase64String(resultArray, , resultArray.Length);
}
else
return toE;
} //解密
private string Decrypt(string toD)
{
if (KeyBox.Text != "")
{
//加密和解密采用相同的key,具体值自己填,但是必须为32位
byte[] keyArray = UTF8Encoding.UTF8.GetBytes(KeyBox.Text);
RijndaelManaged rDel = new RijndaelManaged();
try
{
rDel.Key = keyArray;
}
catch
{
return "密钥长度错误";
}
rDel.Mode = CipherMode.ECB;
rDel.Padding = PaddingMode.PKCS7;
ICryptoTransform cTransform = rDel.CreateDecryptor();
byte[] toEncryptArray;
byte[] resultArray;
try
{
toEncryptArray = Convert.FromBase64String(toD);
resultArray = cTransform.TransformFinalBlock(toEncryptArray, , toEncryptArray.Length); }
catch
{
return "密钥错误";
} return UTF8Encoding.UTF8.GetString(resultArray);
}
else
return toD;
} }
}

最新文章

  1. spring mvc + ehcache 利用注解实现缓存功能
  2. Guava学习笔记(3):复写的Object常用方法
  3. 8.9 CSS知识点2
  4. 一机运行多个resin的配置
  5. JS判断客户端是手机还是PC
  6. 多用pip,少用easy_install。
  7. PL/SQL 触发器简介
  8. Swift 算法实战之路:基本语法与技巧
  9. [转载]使用uiautomator做UI测试
  10. Jasper_mainReport_excel html pdf 主报表中常用属性
  11. Construct Binary Tree From Inorder and Preorder/Postorder Traversal
  12. 【Android】属性动画
  13. crawler_网络爬虫之数据分析_httpwatcher
  14. Egret --视觉编程,显示对象,事件
  15. 查看linux的进程到底用了多少内存
  16. SpringBoot入门:Hello World
  17. POJ3565 Ants (不相交线)
  18. cumsum累计函数系列:pd.cumsum()、pd.cumprod()、pd.cummax()、pd.cummin()
  19. mysql error 1067 invalid default timestamp
  20. Java程序简介

热门文章

  1. Cloneable注解使用
  2. HTML嵌入多媒体对象
  3. mysql查询疯狂41例
  4. HDU 5634 (线段树)
  5. mybatis标签selectkey无法返回主键值
  6. Intel Code Challenge Final Round D. Dense Subsequence 二分思想
  7. Zookeeper原理 一
  8. Book Borders (Gym - 101480B)(二分)
  9. Python地理信息数据可视化
  10. 对AM信号FFT的matlab仿真