C# 使用Rijndael加密文档多个部分的效率
我有一个包含大量敏感数据的大型xml文档。我有一个用Rijndael加密数据的算法C# 使用Rijndael加密文档多个部分的效率,c#,performance,security,encryption,C#,Performance,Security,Encryption,我有一个包含大量敏感数据的大型xml文档。我有一个用Rijndael加密数据的算法 byte[] encrypted; using (RijndaelManaged rijAlg = new RijndaelManaged()) { rijAlg.Key = EncyptionManager.RijndaelKey; rijAlg.IV = EncyptionManager.RijndaelIV; rijAlg.Padding = PaddingMode.PKCS7; ICry
byte[] encrypted;
using (RijndaelManaged rijAlg = new RijndaelManaged())
{
rijAlg.Key = EncyptionManager.RijndaelKey;
rijAlg.IV = EncyptionManager.RijndaelIV;
rijAlg.Padding = PaddingMode.PKCS7;
ICryptoTransform encryptor = rijAlg.CreateEncryptor(rijAlg.Key, rijAlg.IV);
using (MemoryStream msEncrypt = new MemoryStream())
{
using (CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
{
using (StreamWriter swEncrypt = new StreamWriter(csEncrypt))
{
swEncrypt.Write(plainText);
}
encrypted = msEncrypt.ToArray();
}
}
}
return encrypted;
假设文件的绝大部分需要加密存储,那么创建xml文档并加密文件的全部内容,还是保持xml模式不变,只加密特定字段,效率更高?当然,加密整个文件(整个xml ByTestStream)更安全。如果只对XML文档的特定节点进行编码,那么任何关心查看的人仍然能够清楚地看到文档的整个结构,包括存在多少种类型的元素 <> P>您应该考虑做其他事情的唯一原因是,如果您有一个要求,即文档的结构需要在代码上可见和可操作而不进行解密,即操作该对象的代码不能访问加密密钥。 加密整个文档在密钥管理、文件处理逻辑方面也将更加高效。另外,在许多使用IV或块大小填充的加密模式下,加密整个文件将更节省空间
不过,您主要关心的是安全需求,而不是性能。当然,加密整个文件(整个XML ByTestStream)更安全。如果只对XML文档的特定节点进行编码,那么任何关心查看的人仍然能够清楚地看到文档的整个结构,包括存在多少种类型的元素 <> P>您应该考虑做其他事情的唯一原因是,如果您有一个要求,即文档的结构需要在代码上可见和可操作而不进行解密,即操作该对象的代码不能访问加密密钥。 加密整个文档在密钥管理、文件处理逻辑方面也将更加高效。另外,在许多使用IV或块大小填充的加密模式下,加密整个文件将更节省空间
不过,您主要关心的是安全需求,而不是性能。不可能有静态答案。最佳点取决于块的精确计数和大小,因为该算法具有固定的设置成本。加密两个块的成本是加密一个块的两倍
唯一有效的答案是基准测试以找到截止点。不可能有静态答案。最佳点取决于块的精确计数和大小,因为该算法具有固定的设置成本。加密两个块的成本是加密一个块的两倍
唯一有效的答案是进行基准测试以找到截止点。你在问加密一个块是否比加密多个块更有效?@PeterRitchie,是-假设较小块的总长度小于单个块的长度。换言之,最大的消耗是加密的大小还是数量?你是在问加密一个块比加密多个块效率高还是低?@PeterRitchie,是的-假设较小块的总长度小于单个块的长度。换句话说,最大的消耗是加密的大小还是数量?