npm / @noble/ciphers
@noble/ciphers
What changed in @noble/ciphers 2, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-19.
4 breaking5 security3 performance2 behavior and defaults4 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli init@noble/ciphers 218 changes
Breaking changes 4
Using after after clean now throws.
Output buffers that partially overlap unread input are now rejected.
minLen now enforces the NIST SP 800-38G minimum of 2, alongside the radix**minlen >= 100 requirement.
A new cipher parameter enables AAD support in webcrypto wrappers; passing AAD to a cipher that does not support it now throws instead of being silently ignored.
Security 5
Corrects AES CTR handling of partial-block tails on big-endian CPUs.
Padding failures now use a generic aes: bad decrypt message, reducing padding-oracle signal.
Corrects polyval tag normalization on big-endian CPUs.
The ctr from the webcrypto submodule uses the correct counter wrapping.
Zeroization is improved.
Performance 3
Sizing is improved for very large domains.
AES-SIV is 20% faster.
Tree-shaking is improved to reduce bundle sizes.
Behavior and default changes 2
Keys and params are now snapshotted.
The CMAC API is aligned with the other MAC APIs.
Fixes and other changes 4
The package is made Big Endian friendly; all tests pass on s390x.
MAC no longer corrupts oversized outputs.
Compilation issues on TypeScript v6 are fixed.
Byte Array types are fixed to work with TypeScript 5.6 and TypeScript 5.9+, addressing incompatibilities and errors such as TS2345.