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