优化.net中的解密方法

时间:2013-04-11 08:17:49

标签: c# .net

我需要使用以下方法快速解密大量数据。目前使用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;
    }

1 个答案:

答案 0 :(得分:0)

我真的不知道你是否会注意到任何性能提升,但是如果你使用相同的decryptor,你就不能重复使用相同的msDecryptcsDecrypt将它们设置为私有字段?

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;
    }
}

正如我所说,我不知道它是否会有任何区别,但我认为,至少,你不会每次都重新创建MemoryStreamCryptoStream