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