0

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

1 回答 1

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

于 2013-04-11T08:31:50.003 回答