【问题标题】:How can I improve cyphering speed of the Bouncy Castle API?如何提高 Bouncy Castle API 的加密速度?
【发布时间】:2012-11-06 09:59:20
【问题描述】:

我正在使用 C# 开发软件,直到现在我使用的是 .NET 中包含的加密库(尤其是 AesCryptoServiceProvider),但现在我有特殊需求,我需要转向 Bouncy Castle API。我做了一些测试,发现这些 API 与 .NET 框架中包含的 API 相比要慢一些。关于如何提高他们的表现的任何想法? 这是我正在使用的密码: IBufferedCipher cipher = new CtsBlockCipher(new CbcBlockCipher(new AesFastEngine()));

更具体地说,我需要使用 Bouncy Castle API,因为我需要具有相同长度的输入和输出文件,并且 .NET RijndaelManaged(唯一可以确保这种行为的类)是一种方式比AesCryptoServiceProvider 慢。

使用AesCryptoServiceProvider 加密一个 1.7MB 的文件在我的机器中大约需要 40 毫秒,而使用 Bouncy Castle 大约需要 170 毫秒。看起来不多,但是我需要在每分钟有数百个请求的服务器中使用这个软件...

非常感谢!!

【问题讨论】:

    标签: c# performance encryption aes bouncycastle


    【解决方案1】:

    因为听起来你需要一个流密码,所以不妨看看Salsa20。一般应该很快。 Bouncy Castle 有一个实现(Salsa20Engine)。

    【讨论】:

    • 我不知道为什么,但在速度方面,AesCryptoServiceProvider 类比 Bouncy Castle 中的 Salsa20Engine 快得多。
    • 可能是本机代码问题。有很多处理器优化可以用于加密,这可能就是为什么内置的托管 api 对于 Rijndael 来说也慢得多。如果您对速度真的很认真,可以查看公共域程序集优化版本:cr.yp.to/snuffle.html#speed
    • 嗨@jbtule。只是为了确定我得到了你,使用 Salsa20Engine,我可以执行流式 PGP 加密吗?如果是这样,我应该在加密过程中的什么时候添加 Salsa20 引擎?我正在尝试使用具有逐字节动态加密的缓冲流来优化现有的大文件进程加密。我看不到 Salsa20 的位置,但仍然使用参数(文件名、修改日期和密钥)
    猜你喜欢
    • 1970-01-01
    • 2021-11-04
    • 2018-10-06
    • 1970-01-01
    • 2012-05-10
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多