`jsbn`

is one of the fastest JavaScript bignum libraries
currently available. Google uses it as part of their
benchmark suite
for JavaScript.
Since `jsbn`

is pure JavaScript, its performance will
depend on the hardware as well as the quality of the JavaScript
execution environment.

The following table shows the times taken for various public-key operations on a cross-section of browsers and hardware.

Operation | Chrome (PC) | Firefox (PC) | IE (PC) | Mobile |
---|---|---|---|---|

RSA public, 512 bit, e=3 | 0ms | 1ms | 4ms | 40ms |

RSA public, 512 bit, e=F4 | 1ms | 6ms | 20ms | 140ms |

RSA public, 1024 bit, e=3 | 1ms | 3ms | 10ms | 90ms |

RSA public, 1024 bit, e=F4 | 2ms | 15ms | 70ms | 180ms |

RSA private, 512 bit | 5ms | 75ms | 190ms | 270ms |

RSA private, 1024 bit | 30ms | 300ms | 1250ms(*) | 650ms |

EC multiply, 128 bit | 25ms | 200ms | 500ms | 400ms |

EC multiply, 160 bit | 30ms | 450ms | 820ms | 600ms |

EC multiply, 192 bit | 35ms | 750ms | 1250ms | 720ms |

EC multiply, 224 bit | 50ms | 900ms | 2500ms(*) | 900ms |

EC multiply, 256 bit | 65ms | 1300ms | 3100ms(*) | 1300ms |

BB1 encrypt, 192 bit (IETF) | 80ms | 800ms | 2900ms(*) | 1200ms |

BB1 encrypt, 512 bit ("1024") | 300ms | 4500ms | 15000ms | 4600ms |

EC multiply = Elliptic curve point multiplication, bit size denotes both curve prime size and scalar multiplier size.

PC = Win7 64-bit, Intel Core i5 M520 (2.4GHz)

Mobile = Android 2.2 "Froyo" on Samsung Epic 4G

Browsers used:

Google Chrome version 10.0.648.151

Mozilla Firefox version 3.6.15

Microsoft Internet Explorer version 8.0.7601.17514

(*) Slow script dialog triggered