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

XmlEncrypt的更多相关文章

  1. 微信公众号-加解密数据demo坑

    demo里面的MsgSignature作为url参数一部分了,demo也不更新下 坑爹的微信! 解密信息部分 include_once "wxBizMsgCrypt.php"; $ ...

随机推荐

  1. 接口自动化平台——httprunnermanager

    Windows 环境搭建 1. 下载安装pip install httprunner==1.4.2hrun -V #1.4.2har2case -V #0.1.8 2. httprunnermanag ...

  2. Java实验1 - 类的继承(super)- 创建checkaccount继承account

    笔记总结: /** 任务81: 继承性,(降低代码亢余度) * 1.class 子类A Extends 父类B,(private 的内容无法被继承) * 2. 方法可以覆盖(Overrides), 注 ...

  3. zabbix4.0搭建

    一.准备工作 1.yum国内源的安装与更新 1.1 备份原repo文件 cd /etc/yum.repos.d/ mkdir repo_bak mv *.repo repo_bak 1.2 在cent ...

  4. [唐胡璐]Selenium技巧- IE浏览器Zoom和Protected Model Setting

    Selenium Webdriver在IE下跑脚本的时候要保证页面大小为100%,且要在IE internet options, selectSecurity tab and uncheck “Ena ...

  5. 《深入理解Java虚拟机》之(二、垃圾收集器与内存分配策略)

    程序计数器.虚拟机栈.本地方法栈3个区域随线程而生,随线程而灭,这几个区域的内存分配和回收都具备确定性,不需要过多考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟着回收了,而java堆和方法区 ...

  6. 洛谷P4001 [BJOI2006]狼抓兔子(平面图转对偶图)

    传送门 明明只要最小割加点优化就能过的东西…… 然而我偏偏要去学平面图转对偶图结果发现课件关键地方看不清->这里 而且建图累的半死…… 说实话只要最大流建图的时候反向边直接设为当前边容量再加个当 ...

  7. 给程序添加git commit信息

    遇到了一个客户程序出问题,自己这边始终无法重现的bug.为了检查问题,查到了一个添加git的commit信息到程序中的方法,感觉对程序版本控制十分好用. 一,项目中添加如下文件 文件结构: GitVe ...

  8. Python实用黑科技——以某个字段进行分组

    需求: 当前有个字典实例,你想以某个字段比如”日期”对整个字典里面的元素进行分组. 方法: itertools.groupby()函数是专门用来干这个活的.请看下面这个例子,这里有一个列表构成的字典, ...

  9. FatMouse's Speed

    J - FatMouse's Speed DP的题写得多了慢慢也有了思路,虽然也还只是很简单的DP. 因为需要输出所有选择的老鼠,所以刚开始的时候想利用状态压缩来储存所选择的老鼠,后面才发现n太大1& ...

  10. 部署Hadoop2.0高性能集群

    废话不多说直接实战,部署Hadoop高性能集群: 拓扑图: 一.实验前期环境准备: 1.三台主机配置hosts文件:(复制到另外两台主机上) [root@tiandong63 ~]# more /et ...