RSACryptoServiceProvider.VerifyData的性能下降吗? [英] Rotten performance of RSACryptoServiceProvider.VerifyData?

查看:176
本文介绍了RSACryptoServiceProvider.VerifyData的性能下降吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

VerifyData的性能是否很差,以至于该函数实际上是无用的,还是我在下面的代码中做错了什么?

Is the performance of VerifyData so bad that the function is practically useless, or am I doing something very wrong in the code below?

open System
open System.Security.Cryptography

let keySize     = 1024  // bits
let testDataLen = 1000
let iterations  = 100
let hashAlg     = "SHA1"

let timer f =
    let start = DateTime.Now
    f() |> ignore
    let finish = DateTime.Now
    finish - start


let bench () = 
    use rsaSP = new RSACryptoServiceProvider(keySize)
    let rnd = Random()
    let data = Array.create testDataLen 0uy
    rnd.NextBytes data

    let signature = rsaSP.SignData(data, hashAlg)

    let isValid = [for i in 1..iterations -> rsaSP.VerifyData(data, hashAlg, signature)]
                  |> List.forall id
    if not isValid then failwith "Bad signature."

printfn "%d iterations took %A" iterations (timer bench)



100次对VerifyData的调用要花整整3秒的时间。

100 calls to VerifyData takes a full 3 seconds on a 2.1 GHz Dual-Core on 32 bit XP.

我也尝试用重用的SHA1CryptoServiceProvider对象(循环中没有新的实例化),但是没有区别。

I've also tried replacing the "SHA1" string with a SHA1CryptoServiceProvider object that is reused (no new instantiations in the loop), but that makes no difference.

一次验证数据调用的时间为0.03秒-这是怎么回事?

0.03 seconds for a single VerifyData call - what's going on here?

编辑/更新:刚刚尝试使用BigInteger.ModPow,我自己的填充函数和SHA1CryptoServiceProvider.ComputeHash编写F#函数。 100次迭代将在0.07秒内完成,比RSACryptoServiceProvider快40倍。(这些结果一定是错误的。稍后将进行修改。)

Edit/Update: Just tried writing F# functions, using BigInteger.ModPow, my own padding function and SHA1CryptoServiceProvider.ComputeHash. The 100 iterations finish in 0.07 seconds, which is 40 times faster than RSACryptoServiceProvider. (Those results must have been wrong. Will revise later.)

推荐答案

调用RSACryptoServiceProvider SignData或VerifyData方法时延迟

这篇关于RSACryptoServiceProvider.VerifyData的性能下降吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆