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. unity vulkan snapdragon profiler

    your device does not match the hardware requirements of this application 遇到上面那个warning 跟了下 是vulkan c ...

  2. php操作kafka

    php操作kafka----可以参照网上的安装步骤,先安装ldkafka rdkafka,然乎启动zookeeper和kafka服务器 <?php //$conf = new Rdkafka\P ...

  3. 《Redis 设计与实现》读书笔记(二)

    单机数据库实现 九.数据库 1.服务器中的数据库 一个redis服务器保存多个数据库. struct redisServer { //一个数组,多个数据库 redisDb *db; } 当执行sele ...

  4. Codeforces Round #587 (Div. 3) B. Shooting(贪心)

    链接: https://codeforces.com/contest/1216/problem/B 题意: Recently Vasya decided to improve his pistol s ...

  5. Python2.x与3​​.x版本区别Ⅱ

    除法运算 Python中的除法较其它语言显得非常高端,有套很复杂的规则.Python中的除法有两个运算符,/和// 首先来说/除法: 在python 2.x中/除法就跟我们熟https://www.x ...

  6. Luogu P2511 [HAOI2008]木棍分割 二分+DP

    思路:二分+DP 提交:3次 错因:二分写萎了,$cnt$记录段数但没有初始化成$1$,$m$切的次数没有$+1$ 思路: 先二分答案,不提: 然后有个很$naive$的$DP$: 设$f[i][j] ...

  7. HDU 5734 Acperience ( 数学公式推导、一元二次方程 )

    题目链接 题意 : 给出 n 维向量 W.要你构造一个 n 维向量 B = ( b1.b2.b3 ..... ) ( bi ∈ { +1, -1 } ) .然后求出对于一个常数 α > 0 使得 ...

  8. UVALive 7308 Tom and Jerry 猫抓老鼠 物理题

    题目链接: 就是一个老鼠在环上一速度v开始绕环走,一只猫从圆心出发,任意时刻圆心,猫,老鼠三者在一条直线上,且速度也是v,求多久后猫抓到老鼠. #include <cstdio> #inc ...

  9. 【csp模拟赛5】加减法--宽搜维护联通快

    题目大意: 一开始想用并查集,发现很难维护联通块的代表元素,所以用了宽搜,开数组会炸,所以开一个优先队列维护,每扫完一个联通块,统计答案,清空优先队列,!!千万记住注意数组的大小!!! 代码: #in ...

  10. 【luoguP3959 宝藏】-状压DP

    题目描述: 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 n 个深埋在地下的宝藏屋, 也给出了这 n 个宝藏屋之间可供开发的m 条道路和它们的长度. 小明决心亲自前往挖掘所有宝藏屋中的宝藏.但是 ...