如何加密大型XML文件
本文关键字:大型 XML 文件 加密 何加密 | 更新日期: 2023-09-27 18:08:11
我在一台Pc上生成一个XMl文件(从数据库导出表),并将此文件发送到另一台Pc,然后用户从该XMl文件Importdata,出于安全考虑,我需要加密这个文件。通常我使用这个函数
public static string Encrypt(string strText, string strEncrKey)
{
//Initialization Vector IV also must be 8 character long.
byte[] IV = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
try
{
// Declare a UTF8Encoding object so we may use the GetByte
// method to transform the plainText into a Byte array.
byte[] bykey = System.Text.Encoding.UTF8.GetBytes(strEncrKey);
byte[] InputByteArray = System.Text.Encoding.UTF8.GetBytes(strText);
System.Security.Cryptography.DESCryptoServiceProvider des = new System.Security.Cryptography.DESCryptoServiceProvider(); // Create a new DES service provider
// All cryptographic functions need a stream to output the
// encrypted information. Here we declare a memory stream
// for this purpose.
System.IO.MemoryStream ms = new System.IO.MemoryStream();
System.Security.Cryptography.CryptoStream cs = new System.Security.Cryptography.CryptoStream(ms, des.CreateEncryptor(bykey, IV), System.Security.Cryptography.CryptoStreamMode.Write);
// Write the encrypted information to the stream. Flush the information
// when done to ensure everything is out of the buffer.
cs.Write(InputByteArray, 0, InputByteArray.Length);
cs.FlushFinalBlock();
//Return Byte array into Base64 String Format
return Convert.ToBase64String(ms.ToArray());
}
catch (Exception ex)
{
//Return ex.Message
clsLogs.LogError(ex.Message + "|" + ex.TargetSite.ToString() + "|" + ex.StackTrace);
return clsGlobleFunction.errorstring;
}
}
它的工作完美,但它产生的问题,当文件的大小非常大,例如,我的Xml文件显示了以下数据,
<NewDataSet>
<Table>
<Batch_M_id>-1</Batch_M_id>
<RSN>000061483</RSN>
<Parent_RSN />
<Pkg_Location>1</Pkg_Location>
<CompanyId>1</CompanyId>
</Table>
<Table>
<Batch_M_id>-1</Batch_M_id>
<RSN>000062321</RSN>
<Parent_RSN />
<Pkg_Location>1</Pkg_Location>
<CompanyId>1</CompanyId>
</Table>
</NewDataSet>
我需要导出4lacs的RSN号,按照上面的例子表标签将重复4lacs的时间,你能告诉我哪种加密方式更适合这个性能吗?
一般来说,XML是臃肿的。通过设计。设计的考虑是,膨胀可以作为可读性的折衷,因为膨胀可以很容易地打包。所以如果你想把XML文件传输到某个地方,打包吧。net有Zip类,任何其他算法都可以。一旦文件缩小到当前大小的一小部分,其他任何操作都会容易得多。
如果文件大小是个问题,不要对生成的字节进行编码。你得到一个字节流。将其写入文件。请不要先将其转换为文本