0.2.6 • Published 18 hours ago

@thirdweb-dev/crypto v0.2.6

Weekly downloads
-
License
Apache-2.0
Repository
github
Last release
18 hours ago

Installation

npm install @thirdweb-dev/crypto

Available methods

Encryption

methoduse casereturn typeunderlying technology
aesEncrypt(<plaintext>, <password>)Encrypts a string/Uint8Array with AES-GCMPromise<string>WebCrypto (AES-GCM)
aesDecrypt(<ciphertext>, <password>)Decrypts a value encrypted via aesEncryptPromise<string>WebCrypto (AES-GCM)
aesDecryptCompat(<ciphertext>, <password>)Same as aesDecrypt but also supports values encrypted via crypto-js (for backwards compatibility)Promise<string>WebCrypto (AES-GCM)

Hashing

methoduse casereturn typeunderlying technology
sha256(<value>)Hashes a string/Uint8Array with SHA256Promise<Uint8Array>WebCrypto
sha256Hex(<value>)Same as sha256 but reruns as hex stringPromise<string>WebCrypto
sha256Sync(<value>)Same as sha256 but synchronousUint8Array@noble/hashes
sha256SyncHex(<value>)Same as sha256Sync but reruns as hex stringstring@noble/hashes
keccak256Sync(<value>)Hashes a string/Uint8Array with Keccak256Uint8Arrayjs-sha3
keccak256SyncHex(<value>)Same as keccak256Sync but returns as hex stringstringjs-sha3
keccak256SyncHexPrefixed(<value>)Same as keccak256Sync but returns as 0x prefixed hex string0x${string}js-sha3

Initial Benchmarks

sha256 -> Uint8Array

┌──────────────────────────────┬─────────┬────────────────────┬────────┬─────────┐
│          Task Name           │ ops/sec │ Average Time (ns)  │ Margin │ Samples │
├──────────────────────────────┼─────────┼────────────────────┼────────┼─────────┤
│ @thirdweb-dev/crypto (async) │ 112,929 │ 8855.08539999982   │ ±1.37% │ 100000  │
│ @thirdweb-dev/crypto (sync)  │ 55,004  │ 18180.482820000594 │ ±1.02% │ 100000  │
│ crypto-js (sync)             │ 19,213  │ 52047.35353999857  │ ±0.25% │ 100000  │
└──────────────────────────────┴─────────┴────────────────────┴────────┴─────────┘

sha256 -> hex

┌──────────────────────────────┬─────────┬────────────────────┬────────┬─────────┐
│          Task Name           │ ops/sec │ Average Time (ns)  │ Margin │ Samples │
├──────────────────────────────┼─────────┼────────────────────┼────────┼─────────┤
│ @thirdweb-dev/crypto (async) │ 100,845 │ 9916.125730001713  │ ±1.24% │ 100000  │
│ @thirdweb-dev/crypto (sync)  │ 53,751  │ 18604.047449997142 │ ±0.92% │ 100000  │
│ crypto-js (sync)             │ 19,077  │ 52419.03465000334  │ ±0.24% │ 100000  │
└──────────────────────────────┴─────────┴────────────────────┴────────┴─────────┘

keccack256 -> Uint8Array

┌──────────────────────┬─────────┬────────────────────┬────────┬─────────┐
│      Task Name       │ ops/sec │ Average Time (ns)  │ Margin │ Samples │
├──────────────────────┼─────────┼────────────────────┼────────┼─────────┤
│ @thirdweb-dev/crypto │ 72,533  │ 13786.719900000808 │ ±0.31% │ 100000  │
│ ethers@v5            │ 71,891  │ 13909.94663000107  │ ±0.33% │ 100000  │
│ @noble/hashes        │ 27,244  │ 36704.73226000136  │ ±0.19% │ 100000  │
│ viem                 │ 27,115  │ 36879.07953999698  │ ±0.26% │ 100000  │
└──────────────────────┴─────────┴────────────────────┴────────┴─────────┘

keccack256 -> hex

┌──────────────────────┬─────────┬───────────────────┬────────┬─────────┐
│      Task Name       │ ops/sec │ Average Time (ns) │ Margin │ Samples │
├──────────────────────┼─────────┼───────────────────┼────────┼─────────┤
│ @thirdweb-dev/crypto │ 42,947  │ 23284.22780000266 │ ±0.23% │ 100000  │
│ ethers@5             │ 35,568  │ 28114.98005000045 │ ±0.42% │ 100000  │
│ @noble/hashes        │ 15,149  │ 66009.80448000187 │ ±0.26% │ 100000  │
│ viem                 │ 15,217  │ 65714.15843999518 │ ±0.25% │ 100000  │
└──────────────────────┴─────────┴───────────────────┴────────┴─────────┘
0.2.6

20 hours ago

0.2.5

1 month ago

0.2.4

1 month ago

0.2.3

1 month ago

0.2.2

2 months ago

0.2.1

2 months ago

0.2.0

6 months ago