我需要使用以下方法快速解密大量数据。目前使用ICryptoTransform运行大约需要0.3毫秒。有人可以考虑进一步优化它吗?该方法使用不同的dataToDecrypt-value连续多次调用,但具有相同的解密器。
public byte[] DecryptUsingDecryptor(byte[] dataToDecrypt, ICryptoTransform decryptor)
{
byte[] decryptedData = null;
MemoryStream msDecrypt = new MemoryStream();
CryptoStream csDecrypt = new CryptoStream(msDecrypt,
decryptor,
CryptoStreamMode.Write);
csDecrypt.Write(dataToDecrypt, 0, dataToDecrypt.Length);
csDecrypt.FlushFinalBlock();
decryptedData = msDecrypt.ToArray();
csDecrypt.Close();
return decryptedData;
}
答案 0 :(得分:0)
我真的不知道你是否会注意到任何性能提升,但是如果你使用相同的decryptor
,你就不能重复使用相同的msDecrypt
和csDecrypt
将它们设置为私有字段?
public class Decrypter
{
private MemoryStream msDecrypt;
private CryptoStream csDecrypt;
public Decrypter(ICryptoTransform decryptor)
{
msDecrypt = new MemoryStream();
csDecrypt = new CryptoStream(msDecrypt,decryptor,CryptoStreamMode.Write);
}
public byte[] DecryptUsingDecryptor(byte[] dataToDecrypt)
{
byte[] decryptedData = null;
csDecrypt.Write(dataToDecrypt, 0, dataToDecrypt.Length);
csDecrypt.FlushFinalBlock();
decryptedData = msDecrypt.ToArray();
csDecrypt.Close();
return decryptedData;
}
}
正如我所说,我不知道它是否会有任何区别,但我认为,至少,你不会每次都重新创建MemoryStream
和CryptoStream
。