Performance Test Suite

The table hereafter is the result of all benchmarks with our development environment. It is given to help you to select the appropriate algorithms for your application.

The use of the algorithm ECDH-ES with curves P-256, P-384 or P-521 is not recommended. The cryptographic operations with those curves are done using a pure PHP function and hence very slow.

The use of the RSA algorithms with a very long key (more that 4096 bits) is quite slow, but offers a good protection.

The PBES2* algorithms are quite slow, but also offer a good protection (see https://en.wikipedia.org/wiki/PBKDF2). Default salt size (512 bits) and iterations (4096) and custom values (256/1024) used for the tests. Those values can be configured if needed.

subject groups mean
sign JWS,EdDSA,Ed25519 139.323μs
verify JWS,EdDSA,Ed25519 169.125μs
sign JWS,ECDSA,ES256 139.144μs
verify JWS,ECDSA,ES256 223.170μs
sign JWS,ECDSA,ES384 941.535μs
verify JWS,ECDSA,ES384 1,075.417μs
sign JWS,ECDSA,ES512 504.271μs
verify JWS,ECDSA,ES512 826.615μs
sign JWS,hmac,HS256 19.593μs
verify JWS,hmac,HS256 24.045μs
sign JWS,hmac,HS384 20.061μs
verify JWS,hmac,HS384 24.672μs
sign JWS,hmac,HS512 19.838μs
verify JWS,hmac,HS512 24.935μs
sign JWS,none 14.021μs
verify JWS,none 17.317μs
sign JWS,RSASign,PS256 1,310.264μs
verify JWS,RSASign,PS256 121.113μs
sign JWS,RSASign,PS384 1,300.622μs
verify JWS,RSASign,PS384 119.065μs
sign JWS,RSASign,PS512 1,302.404μs
verify JWS,RSASign,PS512 117.445μs
sign JWS,RSASign,RS256 1,280.885μs
verify JWS,RSASign,RS256 106.382μs
sign JWS,RSASign,RS384 1,280.652μs
verify JWS,RSASign,RS384 297.263μs
sign JWS,RSASign,RS512 1,659.753μs
verify JWS,RSASign,RS512 119.476μs
encryption/decryption JWE,GCMKW,A128GCMKW 63.022μs, 60.639μs, 58.909μs (with A128CBC-HS256, A192CBC-HS384, A256CBC-HS512 respectively)
encryption/decryption JWE,GCMKW,A128GCMKW 48.335μs, 50.021μs, 49.393μs (with A128GCM, A192GCM, A256GCM respectively)
encryption/decryption JWE,GCMKW,A192GCMKW 59.719μs, 59.396μs, 60.329μs (with A128CBC-HS256, A192CBC-HS384, A256CBC-HS512 respectively)
encryption/decryption JWE,GCMKW,A192GCMKW 48.432μs, 49.295μs, 50.244μs (with A128GCM, A192GCM, A256GCM respectively)
encryption/decryption JWE,GCMKW,A256GCMKW 60.966μs, 60.621μs, 59.821μs (with A128CBC-HS256, A192CBC-HS384, A256CBC-HS512 respectively)
encryption/decryption JWE,GCMKW,A256GCMKW 48.894μs, 49.165μs, 49.224μs (with A128GCM, A192GCM, A256GCM respectively)
encryption/decryption JWE,KW,A128KW 159.758μs, 176.995μs, 210.580μs (with A128CBC-HS256, A192CBC-HS384, A256CBC-HS512 respectively)
encryption/decryption JWE,KW,A128KW 93.752μs, 117.309μs, 162.917μs (with A128GCM, A192GCM, A256GCM respectively)
encryption/decryption JWE,KW,A192KW 137.808μs, 176.636μs, 214.446μs (with A128CBC-HS256, A192CBC-HS384, A256CBC-HS512 respectively)
encryption/decryption JWE,KW,A192KW 104.048μs, 122.472μs, 138.150μs (with A128GCM, A192GCM, A256GCM respectively)
encryption/decryption JWE,KW,A256KW 139.867μs, 176.727μs, 208.664μs (with A128CBC-HS256, A192CBC-HS384, A256CBC-HS512 respectively)
encryption/decryption JWE,KW,A256KW 93.840μs, 115.313μs, 140.135μs (with A128GCM, A192GCM, A256GCM respectively)
encryption JWE,RSAEnc,RSA1_5 from 178.368μs to 373.941μs (depending on the Content Encryption Algorithm and the key size)
decryption JWE,RSAEnc,RSA1_5 from 354.921μs to 10,148.146μs (depending on the Content Encryption Algorithm and the key size)
encryption JWE,RSAEnc,RSA-OAEP from 188.228μs to 428.624μs (depending on the Content Encryption Algorithm and the key size)
decryption JWE,RSAEnc,RSA-OAEP from 381.853μs to 13,079.733μs (depending on the Content Encryption Algorithm and the key size)
encryption JWE,RSAEnc,RSA-OAEP-256 from 195.231μs to 410.868μs (depending on the Content Encryption Algorithm and the key size)
decryption JWE,RSAEnc,RSA-OAEP-256 from 354.090μs to 11,238.001μs (depending on the Content Encryption Algorithm and the key size)
encryption/decryption JWE,PBES2,PBES2HS256A128KW from 2,109.175μs (256 bit salt / 1024 counts) to 7,943.047μs (512 bit salt / 4096 counts)
encryption/decryption JWE,PBES2,PBES2HS384A192KW from 2,719.313μs (256 bit salt / 1024 counts) to 10,466.043μs (512 bit salt / 4096 counts)
encryption/decryption JWE,PBES2,PBES2HS256A128KW from 2,746.634μs (256 bit salt / 1024 counts) to 10,600.124μs (512 bit salt / 4096 counts)
encryption JWE,ECDHES,ECDHESKW,ECDHESA128KW ~45,198.922μs (with curve P-256)
encryption JWE,ECDHES,ECDHESKW,ECDHESA128KW ~77,320.816μs (with curve P-384)
encryption JWE,ECDHES,ECDHESKW,ECDHESA128KW ~120,709.648μs (with curve P-521)
encryption JWE,ECDHES,ECDHESKW,ECDHESA128KW ~453.445μs (with curve X25519)
decryption JWE,ECDHES,ECDHESKW,ECDHESA128KW ~21,249.059μs (with curve P-256)
decryption JWE,ECDHES,ECDHESKW,ECDHESA128KW ~37,207.750μs (with curve P-384)
decryption JWE,ECDHES,ECDHESKW,ECDHESA128KW ~57,072.871μs (with curve P-521)
decryption JWE,ECDHES,ECDHESKW,ECDHESA128KW ~387.441μs (with curve X25519)
encryption JWE,ECDHES,ECDHESKW,ECDHESA192KW ~44,697.707μs (with curve P-256)
encryption JWE,ECDHES,ECDHESKW,ECDHESA192KW ~76,731.773μs (with curve P-384)
encryption JWE,ECDHES,ECDHESKW,ECDHESA192KW ~124,164.813μs (with curve P-521)
encryption JWE,ECDHES,ECDHESKW,ECDHESA192KW ~501.742μs (with curve X25519)
decryption JWE,ECDHES,ECDHESKW,ECDHESA192KW ~21,603.676μs (with curve P-256)
decryption JWE,ECDHES,ECDHESKW,ECDHESA192KW ~36,172.617μs (with curve P-384)
decryption JWE,ECDHES,ECDHESKW,ECDHESA192KW ~55,530.465μs (with curve P-521)
decryption JWE,ECDHES,ECDHESKW,ECDHESA192KW ~378.129μs (with curve X25519)
encryption JWE,ECDHES,ECDHESKW,ECDHESA256KW ~44,701.426μs (with curve P-256)
encryption JWE,ECDHES,ECDHESKW,ECDHESA256KW ~76,805.012μs (with curve P-384)
encryption JWE,ECDHES,ECDHESKW,ECDHESA256KW ~121,017.648μs (with curve P-521)
encryption JWE,ECDHES,ECDHESKW,ECDHESA256KW ~451.094μs (with curve X25519)
decryption JWE,ECDHES,ECDHESKW,ECDHESA256KW ~21,335.781μs (with curve P-256)
decryption JWE,ECDHES,ECDHESKW,ECDHESA256KW ~36,207.594μs (with curve P-384)
decryption JWE,ECDHES,ECDHESKW,ECDHESA256KW ~55,440.664μs (with curve P-521)
decryption JWE,ECDHES,ECDHESKW,ECDHESA256KW ~377.367μs (with curve X25519)
encryption JWE,ECDHES ~44,762.633μs (with curve P-256)
encryption JWE,ECDHES ~76,660.664μs (with curve P-384)
encryption JWE,ECDHES ~119,539.141μs (with curve P-521)
encryption JWE,ECDHES ~369.992μs (with curve X25519)
decryption JWE,ECDHES ~21,894.422μs (with curve P-256)
decryption JWE,ECDHES ~37,380.137μs (with curve P-384)
decryption JWE,ECDHES ~58,231.930μs (with curve P-521)
decryption JWE,ECDHES ~263.254μs (with curve X25519)

results matching ""

    No results matching ""