當前位置:首頁 » 密碼管理 » 加密的xml

加密的xml

發布時間: 2024-01-08 01:14:45

1. C# 加密、解密 XML 文件操作

以下給出里兩種加密方法1,MD5 ;2,RSA
MD5加密如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Security.Cryptography;

namespace 數據加密與解密
{
public partial class frmMD5 : Form
{
public frmMD5()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "")
{ MessageBox.Show("請輸入加密數據"); return; }
MD5CryptoServiceProvider M5 = new MD5CryptoServiceProvider();
textBox2.Text = ASCIIEncoding.ASCII.GetString(M5.ComputeHash(ASCIIEncoding.ASCII.GetBytes(textBox1.Text)));
}

//MD5是不可的演算法。破解只有用暴力破解法
private void button2_Click(object sender, EventArgs e)
{
MD5CryptoServiceProvider M5 = new MD5CryptoServiceProvider();
//this.textBox3.Text=M5.
}

}
}
RSA加密如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Security.Cryptography;

namespace 數據加密與解密
{
public partial class frmRSA : Form
{
public frmRSA()
{
InitializeComponent();
this.Text = "RSA加密解密";
tb_Encrypt.ReadOnly = true;
tb_Decrypt.ReadOnly = true;
}

private void button1_Click(object sender, EventArgs e)
{
//使用默認密鑰創建RSACryptoServiceProvider對象
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
//顯示包含公鑰/私鑰對的XML表示形式,如果只顯示公鑰,將參數改為false即可
rtb_Keys.Text = rsa.ToXmlString(true);
//將被加密的字元串轉換為位元組數組
byte[] dataToEncrypt = Encoding.UTF8.GetBytes(tb_Input.Text);
try
{
//得到加密後的位元組數組
byte[] encryptedData = rsa.Encrypt(dataToEncrypt, false);
tb_Encrypt.Text = Encoding.UTF8.GetString(encryptedData);
//得到解密後的位元組數組
byte[] decryptedData = rsa.Decrypt(encryptedData, false);
tb_Decrypt.Text = Encoding.UTF8.GetString(decryptedData);
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}
}
}
}

2. 如何使用C#加密解密XML文檔

可以用DES對稱加/解密。XML文檔讀寫我就簡單的用一個序列化的例子了。我只寫加/解/序列化,怎麼顯示你隨意了。
1、建立一個Student的類了,四個屬性
public class Student
{
public string SID { get; set; }

public string Name { get; set; }

public string Score { get; set; }

public string Address { get; set; }
}
2、在你要加/解的頁面加Using
using System.Security.Cryptography;
using System.IO;
using System.Xml.Serialization;
就是序列化、加密、IO了
3、寫兩個方法,加/解
/// <summary>
/// DES的加密方法
/// </summary>
/// <param name="pToEncrypt"></param>
/// <param name="sKey"></param>
/// <returns></returns>
public string Encrypt(string pToEncrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
byte[] inputByteArray = Encoding.Default.GetBytes(pToEncrypt);
des.Mode = CipherMode.ECB;
des.Padding = PaddingMode.Zeros;
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
foreach (byte b in ms.ToArray())
{
ret.AppendFormat("{0:X2}", b);
}
return ret.ToString();
}
/// <summary>
/// DES的解密
/// </summary>
/// <param name="pToDecrypt"></param>
/// <param name="sKey"></param>
/// <returns></returns>
public string Decrypt(string pToDecrypt, string sKey)
{
DESCryptoServiceProvider des = new DESCryptoServiceProvider();
des.Mode = CipherMode.ECB;
des.Padding = PaddingMode.Zeros;
byte[] inputByteArray = new byte[pToDecrypt.Length / 2];
for (int x = 0; x < pToDecrypt.Length / 2; x++)
{
int i = (Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16));
inputByteArray[x] = (byte)i;
}
des.Key = ASCIIEncoding.ASCII.GetBytes(sKey);
des.IV = ASCIIEncoding.ASCII.GetBytes(sKey);
MemoryStream ms = new MemoryStream();
CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write);
cs.Write(inputByteArray, 0, inputByteArray.Length);
cs.FlushFinalBlock();
StringBuilder ret = new StringBuilder();
return System.Text.Encoding.Default.GetString(ms.ToArray()).TrimEnd('\0');
}
//上面為什麼要TrimEnd,因為ms.ToArray()裡面以8位為單位增長,你字元串長11位,這里就是16位,最後面是\0字元,去掉就行。
4、調用加解就很簡單了。
private void button1_Click(object sender, EventArgs e)
{
string Key = "12345678"; //DES的密鑰,8位字元串,不要用中文,如果要解密,這個密鑰也是一樣的。

List<Student> list = new List<Student>()
{
new Student(){ SID="1", Name="張三", Score="87.5", Address="A小區asfasdf"},
new Student(){ SID="2", Name="李四", Score="77.5", Address="B小區asdfsdf"},
new Student(){ SID="3", Name="王五", Score="67.5", Address="C小區23412423434535345"},
};
//假定要加密的是分數和地址

foreach (var obj in list)
{
obj.Score = Encrypt(obj.Score, Key);
obj.Address = Encrypt(obj.Address, Key);
}
XmlSerializer xs = new XmlSerializer(typeof(List<Student>)); //序列化建立xml
Stream stream = new FileStream(@"d:\12345.XML", FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
xs.Serialize(stream, list);
stream.Close();
}
上面是寫一些數據,然後加密兩個屬性:Score和Address。存到D盤
解就是反過來呀。
private void button2_Click(object sender, EventArgs e)
{
string Key = "12345678"; //DES的密鑰

XmlSerializer xs = new XmlSerializer(typeof(List<Student>));
Stream stream = new FileStream(@"d:\\12345.XML", FileMode.Open, FileAccess.Read, FileShare.Read);
var str = xs.Deserialize(stream);
stream.Close();
var list = (List<Student>)str; //轉回List

foreach (var obj in list)
{
obj.Score = Decrypt(obj.Score, Key);
obj.Address = Decrypt(obj.Address, Key);
}
}
其實加解密方法有好多,如果有針對整個XML文件進行壓縮、加密的代碼可發出來一共學習

3. 如何:用對稱密鑰對 XML 元素進行加密

使用
XML
加密,您可以存儲或傳輸敏感
XML,而無需擔心數據被輕易讀取。
此過程使用高級加密標准
(AES)
演算法(又稱為
Rijndael)對
XML
元素進行解密。
當使用諸如
AES
這樣的對稱演算法對
XML
數據進行加密時,必須使用相同的密鑰對
XML
數據進行加密和解密。
此過程中的示例假定加密的
XML
將使用相同密鑰進行解密,並且加密方和解密方對使用的演算法和密鑰達成了一致。
此示例不在加密的
XML
中存儲或加密
AES
密鑰。
此示例適合於以下情形:單個應用程序需要基於存儲在內存中的會話密鑰,或基於從密碼派生的加密強密鑰對數據進行加密。

4. c#加密xml文件

xml加密(XML Encryption)是w3c加密xml的標准。這個加密過程包括加密xml文檔的元素及其子元素,通過加密,xml的初始內容將被替換,但其xml格式仍然被完好的保留。 介紹 我們有3個加密xml的方法 1、僅僅使用對稱加密的方法加密xml 這種加密方法只使用一個密鑰,也就是說無論是加密xml還是解密xml都使用一個相同的密鑰。因為這個密鑰不會在被加密的xml中保存,所以我們需要在加密和解密的過程中載入這個密鑰並保護它不被竊取。 2、使用對稱加密和非對稱加密相結合的方法來加密xml 這種方法需要一個用於加密數據的對稱密鑰和一個用於保護這個對稱密鑰的非對稱密鑰。被加密的對稱密鑰和被加密的數據一起保存在xml文檔中。當用私有非對稱密鑰解密密鑰的時候要用公開非對稱密鑰對密鑰進行加密。 本文就將使用這種方法。想學到其他更多的方法請參看MSDN等到更多的信息。 (譯者註:非對稱加密演算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。公開密鑰與私有密鑰是一對,如果用公開密鑰對數據進行加密,只有用對應的私有密鑰才能解密;如果用私有密鑰對數據進行加密,那麼只有用對應的公開密鑰才能解密。因為加密和解密使用的是兩個不同的密鑰,所以這種演算法叫作非對稱加密演算法。) 3、使用X.509加密xml,這種方法是用X.509作為非對稱密鑰,它由諸如VeriSign之類的第三方提供。 該網站有具體方法,請查閱 http://hi..com/jam12315/blog/item/42b5c4c426ee15af8326ac3b.html 參考文獻: tp://dotnetslackers.com/articles/xml/XMLEncryption.aspx

滿意請採納

熱點內容
redis永久緩存 發布:2024-11-28 12:37:40 瀏覽:55
php是自學網 發布:2024-11-28 12:33:57 瀏覽:732
php採集系統 發布:2024-11-28 12:32:04 瀏覽:907
資料庫恢復的實現技術 發布:2024-11-28 12:25:26 瀏覽:5
壓縮圖檔 發布:2024-11-28 12:25:23 瀏覽:423
自定義緩存 發布:2024-11-28 12:25:07 瀏覽:235
怎麼進電腦的伺服器 發布:2024-11-28 12:23:57 瀏覽:830
伺服器2s1u是什麼意思 發布:2024-11-28 12:22:54 瀏覽:511
伺服器怎麼當做掛機寶 發布:2024-11-28 12:16:49 瀏覽:45
ga演算法nn 發布:2024-11-28 12:12:17 瀏覽:50