Rijndael算法和CryptoStream:是否可以加密/解密多线程
本文关键字:加密 解密 多线程 是否 算法 CryptoStream Rijndael | 更新日期: 2023-09-27 18:17:35
我使用Rijndael加密/解密一些文档。我想知道是否有c#的实现,允许多线程使用该算法,无论是手动还是使用Parallel
框架?我认为这是不可能的,因为它是基于流(CryptoStream
),但它仍然值得一问。有人知道消息来源吗?
我从未听说过。net中的多线程CryptoStream,但是,我认为这取决于您的加密模式。如果加密模式是ECB,当然,您可以轻松地使用Parallel手动使其多线程。For或ForEach。对于CBC或任何其他带反馈的加密模式,除非使用多个初始化向量,否则不太可能使其并行。对于ECB模式:
- 将数据拆分为多个字节数组(假设您使用10个线程加密1280字节),将数据拆分为包含0..127字节,128..
- 使用平行。For或ForEach循环所有10字节数组(例如,创建List <byte[]>实例并将其提供给Parallel。 使用SymmetricAlgorithm.CreateEncryptor/SymmetricAlgorithm.CreateDecryptor创建10个Rijndael加密/解密实例
- 在单独的线程上加密每一部分数据。 再次将数据合并为1000字节数组
所以,我的想法是不使用CryptoStream,相反,你必须调用加密API并直接操作纯文本字节。