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. Shell脚本快速查看网段内ip占用情况和可用ip

    思想就是整个网段ping一遍,对于ping不通的,解析其失败的字符来判定 #!/bin/bash head_add=${} address=${head_add%.*} echo address=$a ...

  2. golang restful api

    https://medium.com/@petrousov/how-to-build-a-restful-api-in-go-for-phonebook-app-d55f7234a10 ------- ...

  3. 开源Asp.net CMS mojoPortal-源码运行

    1.下载mojoPortal源码 下载地址:http://mojoportal.codeplex.com/SourceControl/latest 我下载的版本是:2.4.0.9 MSSQL 以下是m ...

  4. UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd0 in position 140: invalid continuation byte

    web阅片系统,遇到dicom文件在文件夹不能正常读取的问题.解决方法如下: def rep7(request): file_path = os.path.dirname(__file__) + re ...

  5. struts2之多文件上传与拦截器(8)

    前台jsp <s:form action="uploadAction" enctype="multipart/form-data" method=&quo ...

  6. 【Wince-禁止重复启动程序】Wince 不重复启动程序

    创建类Mutex.cs: using System; using System.Linq; using System.Collections.Generic; using System.Text; u ...

  7. Docker Gitlib创建项目后仓库连接IP地址不一致问题(包括进入docker中容器命令及退出命令)

    首次在内网搭建Gitlab环境,在成功后在Gitlab上新建了一个项目. 然而在IDEA上clone项目时发现,项目地址如下: git@0096ce63c43f:root/jump.git 或者这样 ...

  8. find(expr|obj|ele)搜索所有与指定表达式匹配的元素。

    find(expr|obj|ele) 概述 搜索所有与指定表达式匹配的元素.这个函数是找出正在处理的元素的后代元素的好方法. 所有搜索都依靠jQuery表达式来完成.这个表达式可以使用CSS1-3的选 ...

  9. Error: 'The service did not respond in a timely fashion'

    Windows启动时候报这个错,不应在OnStart放执行长的过程,需要开另一个线程来做才能顺利启动 Windows Services: OnStart loop - do I need to del ...

  10. java new一个对象的过程中发生了什么

    java在new一个对象的时候,会先查看对象所属的类有没有被加载到内存,如果没有的话,就会先通过类的全限定名来加载.加载并初始化类完成后,再进行对象的创建工作. 我们先假设是第一次使用该类,这样的话n ...