{"_id":"@ecies/ciphers","_rev":"7-a2d5101ef945894d51f9c649d3a700a1","name":"@ecies/ciphers","dist-tags":{"latest":"0.2.5"},"versions":{"0.1.0":{"name":"@ecies/ciphers","version":"0.1.0","keywords":["cryptography","aes"],"author":{"url":"https://github.com/kigawas","name":"Weiliang Li","email":"to.be.impressive@gmail.com"},"license":"MIT","_id":"@ecies/ciphers@0.1.0","maintainers":[{"name":"kigawas","email":"to.be.impressive@gmail.com"}],"homepage":"https://github.com/ecies/js-ciphers#readme","bugs":{"url":"https://github.com/ecies/js-ciphers/issues"},"dist":{"shasum":"ca48c7fa4e0bdb67d7b35de1a7fc3bceed318f28","tarball":"https://registry.npmjs.org/@ecies/ciphers/-/ciphers-0.1.0.tgz","fileCount":7,"integrity":"sha512-Gwg/uDw9ZRkgpmlNUm6ShlPyb0CGZIdg2z+JuiiHoFMYLo4ZsEv3M1oHX0tU6Jam1SukIttvBnDZlUSJRwXm4A==","signatures":[{"sig":"MEUCIFrYVlefscpD/pnU9fTk13/Pa7U0MW6NdIScvqb74PJXAiEA3/ieonrzTx2wmaDnCrWpP+lFH4bS/R/OhbeIOIBD3VA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ecies%2fciphers@0.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5204},"main":"dist/node.js","types":"dist/node.d.ts","engines":{"node":">=16.0.0"},"exports":{"bun":"./dist/node.js","deno":"./dist/noble.js","types":"./dist/node.d.ts","browser":"./dist/noble.js","default":"./dist/node.js"},"gitHead":"1dbaad6155fd94355cd582580edf6a1bdff3799b","scripts":{"test":"vitest","build":"npx tsc"},"_npmUser":{"name":"kigawas","email":"to.be.impressive@gmail.com"},"repository":{"url":"git+https://github.com/ecies/js-ciphers.git","type":"git"},"_npmVersion":"10.8.3","description":"Node/Pure js symmetric ciphers adapter","directories":{},"_nodeVersion":"22.9.0","dependencies":{"@noble/ciphers":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@9.12.1+sha512.e5a7e52a4183a02d5931057f7a0dbff9d5e9ce3161e33fa68ae392125b79282a8a8a470a51dfc8a0ed86221442eb2fb57019b0990ed24fab519bf0e1bc5ccfc4","devDependencies":{"vitest":"^2.1.2","typescript":"^5.6.3","@types/node":"^22.7.5","@vitest/coverage-v8":"^2.1.2"},"_npmOperationalInternal":{"tmp":"tmp/ciphers_0.1.0_1728668924390_0.33477903095639916","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@ecies/ciphers","version":"0.2.0","keywords":["cryptography","cipher","aes","chacha","xchacha20","xchacha20poly1305"],"author":{"url":"https://github.com/kigawas","name":"Weiliang Li","email":"to.be.impressive@gmail.com"},"license":"MIT","_id":"@ecies/ciphers@0.2.0","maintainers":[{"name":"kigawas","email":"to.be.impressive@gmail.com"}],"homepage":"https://github.com/ecies/js-ciphers#readme","bugs":{"url":"https://github.com/ecies/js-ciphers/issues"},"dist":{"shasum":"33a9e1ec08ca7af8dd9be52f8e66355f6706a4a4","tarball":"https://registry.npmjs.org/@ecies/ciphers/-/ciphers-0.2.0.tgz","fileCount":15,"integrity":"sha512-dqQk3HbyuXSdflgRMrXjEcCohKeBZQl2rm0lOcYnEC4Oue90irVMwVJ0GiM/nhjP0zzGimH8mVFF/pOzQcv+Lg==","signatures":[{"sig":"MEUCIQCnaU7CwvbuGLHwRQaYvDpF9Gf3OqyzGyrqZlMChi8k5wIgf4efGLPSdNT+kE8g+RfvLZMwD54OBYF1PjsiJxh/nyo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ecies%2fciphers@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13577},"engines":{"bun":">=1","deno":">=2","node":">=16"},"exports":{".":null,"./aes":{"bun":"./dist/aes/node.js","deno":"./dist/aes/noble.js","types":"./dist/aes/node.d.ts","browser":"./dist/aes/noble.js","default":"./dist/aes/node.js"},"./chacha":{"bun":"./dist/chacha/noble.js","deno":"./dist/chacha/noble.js","types":"./dist/chacha/node.d.ts","browser":"./dist/chacha/noble.js","default":"./dist/chacha/node.js"}},"gitHead":"53d1362fb00542469bf45f490225a5e704f2b342","scripts":{"test":"vitest","build":"npx tsc"},"_npmUser":{"name":"kigawas","email":"to.be.impressive@gmail.com"},"repository":{"url":"git+https://github.com/ecies/js-ciphers.git","type":"git"},"_npmVersion":"10.9.0","description":"Node/Pure JavaScript symmetric ciphers adapter","directories":{},"_nodeVersion":"22.10.0","_hasShrinkwrap":false,"packageManager":"pnpm@9.12.2+sha512.22721b3a11f81661ae1ec68ce1a7b879425a1ca5b991c975b074ac220b187ce56c708fe5db69f4c962c989452eee76c82877f4ee80f474cebd61ee13461b6228","devDependencies":{"vitest":"^2.1.3","typescript":"^5.6.3","@types/node":"^22.7.6","@vitest/coverage-v8":"^2.1.3"},"peerDependencies":{"@noble/ciphers":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ciphers_0.2.0_1729345583192_0.5803144180872859","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"@ecies/ciphers","version":"0.2.1","keywords":["cryptography","cipher","aes","chacha","xchacha20","xchacha20poly1305"],"author":{"url":"https://github.com/kigawas","name":"Weiliang Li","email":"to.be.impressive@gmail.com"},"license":"MIT","_id":"@ecies/ciphers@0.2.1","maintainers":[{"name":"kigawas","email":"to.be.impressive@gmail.com"}],"homepage":"https://github.com/ecies/js-ciphers#readme","bugs":{"url":"https://github.com/ecies/js-ciphers/issues"},"dist":{"shasum":"a3119516fb55d27ed2d21c497b1c4988f0b4ca02","tarball":"https://registry.npmjs.org/@ecies/ciphers/-/ciphers-0.2.1.tgz","fileCount":15,"integrity":"sha512-ezMihhjW24VNK/2qQR7lH8xCQY24nk0XHF/kwJ1OuiiY5iEwQXOcKVSy47fSoHPRG8gVGXcK5SgtONDk5xMwtQ==","signatures":[{"sig":"MEUCIDadCN55CMFYzxUhf6fgbgX7uSNV8U3X/hVTVmKty4HUAiEA2omotsy4jveMkReB5MciaNrUXgWc9MleNFNCBV/qw5k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ecies%2fciphers@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13816},"engines":{"bun":">=1","deno":">=2","node":">=16"},"exports":{".":null,"./aes":{"bun":"./dist/aes/node.js","deno":"./dist/aes/noble.js","types":"./dist/aes/node.d.ts","browser":"./dist/aes/noble.js","default":"./dist/aes/node.js","react-native":"./dist/aes/noble.js"},"./chacha":{"bun":"./dist/chacha/noble.js","deno":"./dist/chacha/noble.js","types":"./dist/chacha/node.d.ts","browser":"./dist/chacha/noble.js","default":"./dist/chacha/node.js","react-native":"./dist/chacha/noble.js"}},"gitHead":"c2b32fc8dea88a08ab0da01d6fc40f7f82eb643c","scripts":{"test":"vitest","build":"npx tsc"},"_npmUser":{"name":"kigawas","email":"to.be.impressive@gmail.com"},"repository":{"url":"git+https://github.com/ecies/js-ciphers.git","type":"git"},"_npmVersion":"10.9.0","description":"Node/Pure JavaScript symmetric ciphers adapter","directories":{},"_nodeVersion":"22.10.0","_hasShrinkwrap":false,"packageManager":"pnpm@9.12.3+sha512.cce0f9de9c5a7c95bef944169cc5dfe8741abfb145078c0d508b868056848a87c81e626246cb60967cbd7fd29a6c062ef73ff840d96b3c86c40ac92cf4a813ee","devDependencies":{"vitest":"^2.1.4","typescript":"^5.6.3","@types/node":"^22.8.4","@vitest/coverage-v8":"^2.1.4"},"peerDependencies":{"@noble/ciphers":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ciphers_0.2.1_1730341529335_0.7983099746645668","host":"s3://npm-registry-packages"}},"0.2.2":{"name":"@ecies/ciphers","version":"0.2.2","keywords":["cryptography","cipher","aes","chacha","chacha20","chacha20poly1305","xchacha20","xchacha20poly1305"],"author":{"url":"https://github.com/kigawas","name":"Weiliang Li","email":"to.be.impressive@gmail.com"},"license":"MIT","_id":"@ecies/ciphers@0.2.2","maintainers":[{"name":"kigawas","email":"to.be.impressive@gmail.com"}],"homepage":"https://github.com/ecies/js-ciphers#readme","bugs":{"url":"https://github.com/ecies/js-ciphers/issues"},"dist":{"shasum":"82a15b10a6e502b63fb30915d944b2eaf3ff17ff","tarball":"https://registry.npmjs.org/@ecies/ciphers/-/ciphers-0.2.2.tgz","fileCount":17,"integrity":"sha512-ylfGR7PyTd+Rm2PqQowG08BCKA22QuX8NzrL+LxAAvazN10DMwdJ2fWwAzRj05FI/M8vNFGm3cv9Wq/GFWCBLg==","signatures":[{"sig":"MEQCIB0CJWMrR0wtfaFfVEvzBXJwFL2BHrAnAHAmDL7SGY7VAiBFwmYkkd4yjwtzLJIz3UFRB72QQcEbJlNa5G+XRoEbdw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ecies%2fciphers@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15027},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"bun":">=1","deno":">=2","node":">=16"},"exports":{".":null,"./aes":{"bun":"./dist/aes/node.js","deno":"./dist/aes/noble.js","types":"./dist/aes/node.d.ts","browser":"./dist/aes/noble.js","default":"./dist/aes/node.js","react-native":"./dist/aes/noble.js"},"./chacha":{"bun":"./dist/chacha/noble.js","deno":"./dist/chacha/noble.js","types":"./dist/chacha/node.d.ts","browser":"./dist/chacha/noble.js","default":"./dist/chacha/node.js","react-native":"./dist/chacha/noble.js"}},"gitHead":"402f97087389c38679c1b0c623d7b28254bae6cb","scripts":{"test":"vitest","build":"npx tsc","test:browser":"cd tests-browser && pnpm test"},"_npmUser":{"name":"kigawas","email":"to.be.impressive@gmail.com"},"repository":{"url":"git+https://github.com/ecies/js-ciphers.git","type":"git"},"_npmVersion":"10.9.0","description":"Node/Pure JavaScript symmetric ciphers adapter","directories":{},"_nodeVersion":"22.11.0","_hasShrinkwrap":false,"packageManager":"pnpm@9.14.2+sha512.6e2baf77d06b9362294152c851c4f278ede37ab1eba3a55fda317a4a17b209f4dbb973fb250a77abc463a341fcb1f17f17cfa24091c4eb319cda0d9b84278387","devDependencies":{"vitest":"^2.1.6","typescript":"^5.7.2","@types/node":"^22.10.1","@vitest/coverage-v8":"^2.1.6"},"peerDependencies":{"@noble/ciphers":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ciphers_0.2.2_1732811832869_0.5676670361906926","host":"s3://npm-registry-packages"}},"0.2.3":{"name":"@ecies/ciphers","version":"0.2.3","keywords":["cryptography","cipher","aes","chacha","chacha20","chacha20poly1305","xchacha20","xchacha20poly1305"],"author":{"url":"https://github.com/kigawas","name":"Weiliang Li","email":"to.be.impressive@gmail.com"},"license":"MIT","_id":"@ecies/ciphers@0.2.3","maintainers":[{"name":"kigawas","email":"to.be.impressive@gmail.com"}],"homepage":"https://github.com/ecies/js-ciphers#readme","bugs":{"url":"https://github.com/ecies/js-ciphers/issues"},"dist":{"shasum":"963805e46d07e646550098ac29cbcc5b132218ea","tarball":"https://registry.npmjs.org/@ecies/ciphers/-/ciphers-0.2.3.tgz","fileCount":17,"integrity":"sha512-tapn6XhOueMwht3E2UzY0ZZjYokdaw9XtL9kEyjhQ/Fb9vL9xTFbOaI+fV0AWvTpYu4BNloC6getKW6NtSg4mA==","signatures":[{"sig":"MEUCIC2lqS1sSsO4k+hI2AN39dqLfHrWM8PsmvjUyZ7fcfBPAiEAnRnJP+1c0eexy2azfWg5tjf/3ucGswdftipouzsgeGc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ecies%2fciphers@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15901},"main":"dist/index.js","types":"./dist/index.d.ts","engines":{"bun":">=1","deno":">=2","node":">=16"},"exports":{".":null,"./aes":{"bun":"./dist/aes/node.js","deno":"./dist/aes/node.js","types":"./dist/aes/node.d.ts","browser":"./dist/aes/noble.js","default":"./dist/aes/node.js","react-native":"./dist/aes/noble.js"},"./chacha":{"bun":"./dist/chacha/noble.js","deno":"./dist/chacha/noble.js","types":"./dist/chacha/node.d.ts","browser":"./dist/chacha/noble.js","default":"./dist/chacha/node.js","react-native":"./dist/chacha/noble.js"}},"gitHead":"e74a78c671d042007e111a01a6d2f79fba15ee9f","scripts":{"test":"vitest","build":"npx tsc","test:browser":"cd tests-browser && pnpm test"},"_npmUser":{"name":"kigawas","email":"to.be.impressive@gmail.com"},"repository":{"url":"git+https://github.com/ecies/js-ciphers.git","type":"git"},"_npmVersion":"10.9.2","description":"Node/Pure JavaScript symmetric ciphers adapter","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.5.2+sha512.da9dc28cd3ff40d0592188235ab25d3202add8a207afbedc682220e4a0029ffbff4562102b9e6e46b4e3f9e8bd53e6d05de48544b0c57d4b0179e22c76d1199b","devDependencies":{"vitest":"^3.0.7","typescript":"^5.8.2","@types/node":"^22.13.9","@vitest/coverage-v8":"^3.0.7"},"peerDependencies":{"@noble/ciphers":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ciphers_0.2.3_1741261792243_0.00863990446066798","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@ecies/ciphers","version":"0.2.4","keywords":["cryptography","cipher","aes","chacha","chacha20","chacha20poly1305","xchacha20","xchacha20poly1305"],"author":{"url":"https://github.com/kigawas","name":"Weiliang Li","email":"to.be.impressive@gmail.com"},"license":"MIT","_id":"@ecies/ciphers@0.2.4","maintainers":[{"name":"kigawas","email":"to.be.impressive@gmail.com"}],"homepage":"https://github.com/ecies/js-ciphers#readme","bugs":{"url":"https://github.com/ecies/js-ciphers/issues"},"dist":{"shasum":"20a4e51f61d521e5e311eb49385d93d91087de51","tarball":"https://registry.npmjs.org/@ecies/ciphers/-/ciphers-0.2.4.tgz","fileCount":17,"integrity":"sha512-t+iX+Wf5nRKyNzk8dviW3Ikb/280+aEJAnw9YXvCp2tYGPSkMki+NRY+8aNLmVFv3eNtMdvViPNOPxS8SZNP+w==","signatures":[{"sig":"MEUCIFTqd8761+1cndABboDkQ1mKr1/ltdC7vkLv3ptuZM+pAiEA+UDlJiHUJN71C8U30t4EoYwN5g8mUn4wwAYFcOXreCc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ecies%2fciphers@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16058},"main":"dist/index.js","pnpm":{"onlyBuiltDependencies":["esbuild"]},"types":"./dist/index.d.ts","engines":{"bun":">=1","deno":">=2","node":">=16"},"exports":{".":null,"./aes":{"bun":"./dist/aes/node.js","deno":"./dist/aes/node.js","types":"./dist/aes/node.d.ts","browser":"./dist/aes/noble.js","default":"./dist/aes/node.js","react-native":"./dist/aes/noble.js"},"./chacha":{"bun":"./dist/chacha/noble.js","deno":"./dist/chacha/noble.js","types":"./dist/chacha/node.d.ts","browser":"./dist/chacha/noble.js","default":"./dist/chacha/node.js","react-native":"./dist/chacha/noble.js"}},"gitHead":"05a01f57728718eacfd36a8aaa904f0404520b22","scripts":{"test":"vitest","build":"npx tsc","test:browser":"cd tests-browser && pnpm test"},"_npmUser":{"name":"kigawas","actor":{"name":"kigawas","type":"user","email":"to.be.impressive@gmail.com"},"email":"to.be.impressive@gmail.com"},"repository":{"url":"git+https://github.com/ecies/js-ciphers.git","type":"git"},"_npmVersion":"11.4.2","description":"Node/Pure JavaScript symmetric ciphers adapter","directories":{},"_nodeVersion":"24.3.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.12.4+sha512.5ea8b0deed94ed68691c9bad4c955492705c5eeb8a87ef86bc62c74a26b037b08ff9570f108b2e4dbd1dd1a9186fea925e527f141c648e85af45631074680184","devDependencies":{"vitest":"^3.2.4","typescript":"^5.8.3","@types/node":"^24.0.10","@vitest/coverage-v8":"^3.2.4"},"peerDependencies":{"@noble/ciphers":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ciphers_0.2.4_1751723514630_0.9609998218087967","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@ecies/ciphers","description":"Node/Pure JavaScript symmetric ciphers adapter","license":"MIT","author":{"name":"Weiliang Li","email":"to.be.impressive@gmail.com","url":"https://github.com/kigawas"},"repository":{"type":"git","url":"git+https://github.com/ecies/js-ciphers.git"},"version":"0.2.5","engines":{"node":">=16","bun":">=1","deno":">=2"},"keywords":["cryptography","cipher","aes","chacha","chacha20","chacha20poly1305","xchacha20","xchacha20poly1305"],"main":"dist/index.js","exports":{".":null,"./aes":{"types":"./dist/aes/node.d.ts","browser":"./dist/aes/noble.js","react-native":"./dist/aes/noble.js","deno":"./dist/aes/node.js","bun":"./dist/aes/node.js","default":"./dist/aes/node.js"},"./chacha":{"types":"./dist/chacha/node.d.ts","browser":"./dist/chacha/noble.js","react-native":"./dist/chacha/noble.js","deno":"./dist/chacha/noble.js","bun":"./dist/chacha/noble.js","default":"./dist/chacha/node.js"}},"scripts":{"check":"biome check","check:fix":"biome check --fix","build":"npx tsc","test":"vitest","test:browser":"cd tests-browser && pnpm test"},"peerDependencies":{"@noble/ciphers":"^1.0.0"},"devDependencies":{"@biomejs/biome":"2.3.2","@types/node":"^24.10.0","@vitest/coverage-v8":"^4.0.6","typescript":"^5.9.3","vitest":"^4.0.6"},"pnpm":{"onlyBuiltDependencies":["esbuild"]},"packageManager":"pnpm@10.20.0+sha512.cf9998222162dd85864d0a8102e7892e7ba4ceadebbf5a31f9c2fce48dfce317a9c53b9f6464d1ef9042cba2e02ae02a9f7c143a2b438cd93c91840f0192b9dd","gitHead":"b26a8425b63e7174d49eae67a6c0429daa2b39c2","types":"./dist/index.d.ts","_id":"@ecies/ciphers@0.2.5","bugs":{"url":"https://github.com/ecies/js-ciphers/issues"},"homepage":"https://github.com/ecies/js-ciphers#readme","_nodeVersion":"24.11.0","_npmVersion":"11.6.1","dist":{"integrity":"sha512-GalEZH4JgOMHYYcYmVqnFirFsjZHeoGMDt9IxEnM9F7GRUUyUksJ7Ou53L83WHJq3RWKD3AcBpo0iQh0oMpf8A==","shasum":"754ff2f821645f0465d18a1a68198eb15d16c2a0","tarball":"https://registry.npmjs.org/@ecies/ciphers/-/ciphers-0.2.5.tgz","fileCount":17,"unpackedSize":16501,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ecies%2fciphers@0.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICxsV14PxMFaOZPhpohV7ZPwWaUKckWvA7/SiOGEnhqJAiEA3MEsyZbfIk2NkTVQDQDTUM02vqZ53gYXEAPabA1VuaI="}]},"_npmUser":{"name":"kigawas","email":"to.be.impressive@gmail.com"},"directories":{},"maintainers":[{"name":"kigawas","email":"to.be.impressive@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ciphers_0.2.5_1762228115752_0.21002054398188585"},"_hasShrinkwrap":false}},"time":{"created":"2024-10-11T17:48:44.260Z","modified":"2025-11-04T03:48:36.360Z","0.1.0":"2024-10-11T17:48:44.563Z","0.2.0":"2024-10-19T13:46:23.420Z","0.2.1":"2024-10-31T02:25:29.509Z","0.2.2":"2024-11-28T16:37:13.064Z","0.2.3":"2025-03-06T11:49:52.444Z","0.2.4":"2025-07-05T13:51:54.827Z","0.2.5":"2025-11-04T03:48:35.940Z"},"bugs":{"url":"https://github.com/ecies/js-ciphers/issues"},"author":{"name":"Weiliang Li","email":"to.be.impressive@gmail.com","url":"https://github.com/kigawas"},"license":"MIT","homepage":"https://github.com/ecies/js-ciphers#readme","keywords":["cryptography","cipher","aes","chacha","chacha20","chacha20poly1305","xchacha20","xchacha20poly1305"],"repository":{"type":"git","url":"git+https://github.com/ecies/js-ciphers.git"},"description":"Node/Pure JavaScript symmetric ciphers adapter","maintainers":[{"name":"kigawas","email":"to.be.impressive@gmail.com"}],"readme":"# @ecies/ciphers\n\n[![License](https://img.shields.io/github/license/ecies/js-ciphers.svg)](https://github.com/ecies/js-ciphers)\n[![NPM Package](https://img.shields.io/npm/v/@ecies/ciphers.svg)](https://www.npmjs.com/package/@ecies/ciphers)\n[![NPM Downloads](https://img.shields.io/npm/dm/@ecies/ciphers)](https://npm-stat.link/@ecies/ciphers)\n[![Install size](https://packagephobia.com/badge?p=@ecies/ciphers)](https://packagephobia.com/result?p=@ecies/ciphers)\n[![CI](https://img.shields.io/github/actions/workflow/status/ecies/js-ciphers/ci.yml)](https://github.com/ecies/js-ciphers/actions)\n[![Codecov](https://img.shields.io/codecov/c/github/ecies/js-ciphers.svg)](https://codecov.io/gh/ecies/js-ciphers)\n\nNode/Pure JavaScript symmetric ciphers adapter.\n\nIf native implementations are available on some platforms (e.g. node, deno, bun), it'll use [`node:crypto`](https://nodejs.org/api/crypto.html#cryptocreatecipherivalgorithm-key-iv-options) for efficiency.\n\nOtherwise (e.g. browser, react native), it'll use [`@noble/ciphers`](https://github.com/paulmillr/noble-ciphers) for compatibility.\n\n| | aes | chacha |\n| ------------ | ---------------- | ---------------- |\n| Node | `node:crypto` ⚡ | `node:crypto` ⚡ |\n| Bun | `node:crypto` ⚡ | `@noble/ciphers` |\n| Deno | `node:crypto` ⚡ | `@noble/ciphers` |\n| Browser | `@noble/ciphers` | `@noble/ciphers` |\n| React Native | `@noble/ciphers` | `@noble/ciphers` |\n\n> [!NOTE]\n> You may need to polyfill [`crypto.getRandomValues`](https://github.com/LinusU/react-native-get-random-values) for React Native.\n>\n> There are some limitations, see [Known limitations](#known-limitations) below.\n>\n> This library is tree-shakeable, unused code will be excluded by bundlers.\n\nCheck the [example](./example/) folder for more usages.\n\n## Quick start\n\n```js\n// example/quick-start.js\nimport { aes256gcm } from \"@ecies/ciphers/aes\";\nimport { randomBytes } from \"@noble/ciphers/webcrypto\";\n\nconst TEXT = \"hello world🌍!\";\nconst encoder = new TextEncoder();\nconst decoder = new TextDecoder();\nconst msg = encoder.encode(TEXT);\n\nconst key = randomBytes();\nconst nonce = randomBytes(16);\nconst cipher = aes256gcm(key, nonce);\nconsole.log(\"decrypted:\", decoder.decode(cipher.decrypt(cipher.encrypt(msg))));\n```\n\nThe API follows `@noble/ciphers`'s API for ease of use, you can check their [examples](https://github.com/paulmillr/noble-ciphers#examples) as well.\n\n## Supported ciphers\n\n- `aes-256-gcm`\n - Both 16 bytes and 12 bytes nonce are supported.\n- `aes-256-cbc`\n - **Only for legacy applications**. You should use `xchacha20-poly1305` or `aes-256-gcm` as possible.\n - Nonce is always 16 bytes.\n- `chacha20-poly1305`\n - Nonce is always 12 bytes.\n- `xchacha20-poly1305`\n - Nonce is always 24 bytes.\n\nIf key is fixed and nonce is less than 16 bytes, **avoid randomly generated nonce**.\n\n## Known limitations\n\n- `xchacha20-poly1305` is implemented with pure JS [`hchacha20`](https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-xchacha#section-2.2) function and `node:crypto`'s `chacha20-poly1305` on node.\n- Currently (Nov 2025), `node:crypto`'s `chacha20-poly1305` is neither supported on [deno](https://github.com/denoland/deno/issues/28411) nor [bun](https://github.com/oven-sh/bun/issues/8072), `@noble/ciphers`'s implementation is used on both platforms instead.\n- Some old versions of `deno` [did not support](https://github.com/denoland/deno/discussions/17964#discussioncomment-10917259) **indirect** conditional exports. If you used this library to build another library, client code of your library might have fell back to the `node:crypto` implementation and would not work properly, specifically `aes-256-gcm` (16 bytes nonce) and `chacha20-poly1305`. If you found such a problem, upgrade deno and run with `--conditions deno` (>=2.4.0) or `--unstable-node-conditions deno`(>=2.3.6,<2.4.0).\n","readmeFilename":"README.md"}