日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

XML 文件加密与解密

發布時間:2023/12/20 asp.net 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XML 文件加密与解密 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

????? 做這個小程序實屬無奈,客戶擔心文件泄露,要求我們加密,其實都不是什么重要的文件,純屬是客戶給我們加工作量,但是也算是學到了一些東西,因此博主對客戶的感情摻雜這愛與恨吧。下面看看我的程序吧,其實很簡單,主要是用WPF做的。

加密解密文件當然要有相關的加密解密函數:

? public void Decrypt(string filename)//解密函數
??????? {
??????????? XmlDocument doc = new XmlDocument();
??????????? doc.Load(filename);
??????????? XmlElement encryptedElement = doc.GetElementsByTagName("EncryptedData")[0] as XmlElement;
??????????? EncryptedData edElement = new EncryptedData();
??????????? edElement.LoadXml(encryptedElement);
??????????? EncryptedXml exml = new EncryptedXml();
??????????? RijndaelManaged key = new RijndaelManaged();
??????????? byte[] bytekey = Encoding.Unicode.GetBytes("1111111111111111");
??????????? key.Key = bytekey;
??????????? byte[] output = exml.DecryptData(edElement, key);
??????????? exml.ReplaceData(encryptedElement, output);
??????????? doc.Save(filename);
??????? }

??????? public void Encrypt(string filename)加密函數
??????? {
??????????? XmlDocument doc = new XmlDocument();
??????????? doc.Load(filename);
??????????? RijndaelManaged Key = new RijndaelManaged();
??????????? byte[] byteKey = Encoding.Unicode.GetBytes("1111111111111111");
??????????? Key.Key = byteKey;
??????????? string ElementName = doc.DocumentElement.Name;
??????????? XmlElement elementToEncrypt = doc.GetElementsByTagName(ElementName)[0] as XmlElement;
??????????? EncryptedXml eXml = new EncryptedXml();
??????????? byte[] encryptedElement = eXml.EncryptData(elementToEncrypt, Key, false);
??????????? EncryptedData edElement = new EncryptedData();
??????????? edElement.Type = EncryptedXml.XmlEncElementUrl;
??????????? string encryptionMethod = null;
??????????? if (Key is TripleDES)
??????????? {
??????????????? encryptionMethod = EncryptedXml.XmlEncTripleDESUrl;
??????????? }
??????????? else if (Key is DES)
??????????? {
??????????????? encryptionMethod = EncryptedXml.XmlEncDESUrl;
??????????? }
??????????? if (Key is Rijndael)
??????????? {
??????????????? switch (Key.KeySize)
??????????????? {
??????????????????? case 128:
??????????????????????? encryptionMethod = EncryptedXml.XmlEncAES128Url;
??????????????????????? break;
??????????????????? case 192:
??????????????????????? encryptionMethod = EncryptedXml.XmlEncAES192Url;
??????????????????????? break;
??????????????????? case 256:
??????????????????????? encryptionMethod = EncryptedXml.XmlEncAES256Url;
??????????????????????? break;
??????????????? }
??????????? }
??????????? edElement.EncryptionMethod = new EncryptionMethod(encryptionMethod);
??????????? edElement.CipherData.CipherValue = encryptedElement;
??????????? EncryptedXml.ReplaceElement(elementToEncrypt, edElement, false);
??????????? doc.Save(filename);
??????? }

接下來就是在界面上添加button按鈕,以便瀏覽你要操作的文件。

? private void btnBrowse_Click(object sender, RoutedEventArgs e)
??????? {
??????????? FolderBrowserDialog FBD = new FolderBrowserDialog();
??????????? FBD.Description = "請選擇一個路徑";
??????????? if (FBD.ShowDialog() == System.Windows.Forms.DialogResult.OK)
??????????? {
??????????????? txtBrowse.Text = FBD.SelectedPath;
??????????? }

??????? }

然后添加相應的加密解密按鈕,對瀏覽到的文件進行加密或者解密。

??? private void btnEncrypt_Click(object sender, RoutedEventArgs e)
??????? {
??????????? string path = txtBrowse.Text;
??????????? DirectoryInfo theFolder = new DirectoryInfo(path);

??????????? FileInfo[] fileInfo = theFolder.GetFiles();

??????????? foreach (FileInfo NextFile in fileInfo)? //遍歷文件
??????????? {
??????????????? Encrypt(NextFile.FullName);
??????????? }
??????? }

??????? private void btnDecrypt_Click(object sender, RoutedEventArgs e)
??????? {
??????????? string path = txtBrowse.Text;
??????????? DirectoryInfo theFolder = new DirectoryInfo(path);

??????????? FileInfo[] fileInfo = theFolder.GetFiles();

??????????? foreach (FileInfo NextFile in fileInfo)? //遍歷文件
??????????? {
??????????????? Decrypt(NextFile.FullName);
??????????? }
??????? }

后來博主為了練手,有添加一個改變文件后綴的功能:

??????? private void btnChangeFormat_Click(object sender, RoutedEventArgs e)
??????? {
??????????? string destinationFormat = txtDestFormat.Text;
??????????? string path = txtBrowse.Text;
??????????? DirectoryInfo theFolder = new DirectoryInfo(path);

??????????? FileInfo[] fileInfo = theFolder.GetFiles();
??????? ?
??????????? foreach (FileInfo NextFile in fileInfo)? //遍歷文件
??????????? {
??????????????? string s = System.IO.Path.ChangeExtension(NextFile.FullName, destinationFormat);
??????????????? File.Move(NextFile.FullName, s);
??????????? }
??????? }

好了,功能基本實現了。在這里就不截圖軟件的界面了,如果有需要的小伙伴可以留言

總結

以上是生活随笔為你收集整理的XML 文件加密与解密的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。