Skip to content

Releases: agntn/ciphers

v0.7.0

Choose a tag to compare

@oritwoen oritwoen released this 07 Oct 16:09
Immutable release. Only release title and notes can be modified.

compare changes

🚀 Enhancements

  • Take SHA-224 in the OpenPGP S2K (#225)
  • block: Open OpenPGP messages keyed by SHA-3 (#226)
  • block: Open OpenPGP AEAD messages (#230)
  • Add MCP server description and icons (#232)

💅 Refactors

  • ⚠️ Build the CLI with runCli (#229)

⚠️ Breaking Changes

  • ⚠️ Build the CLI with runCli (#229)

❤️ Contributors

v0.6.1

Choose a tag to compare

@oritwoen oritwoen released this 04 Oct 23:38
Immutable release. Only release title and notes can be modified.

compare changes

🚀 Enhancements

  • block: Open BZip2 in gpg messages too (#223)

🩹 Fixes

  • cli: Stop reading Morse as flags (#214)
  • docs: Answer /mcp calls with no arguments (#217)
  • docs: Keep bidi out of /mcp refusals (#220)
  • cli: Hand citty only the flags it answers (#221)

❤️ Contributors

v0.6.0

Choose a tag to compare

@oritwoen oritwoen released this 04 Oct 15:32
Immutable release. Only release title and notes can be modified.

compare changes

🚀 Enhancements

  • ⚠️ Say what each cipher works on (#190)
  • Give byte cipher plaintext back as hex (#192)
  • classical: Turn letters into A1Z26 numbers (#198)
  • stream: Add Salsa20, ChaCha20 and Poly1305 (#201)
  • Probe a salted blob across KDF settings (#202)
  • Drag a crib across reused XOR keys (#204)
  • classical: Read numbers as words of a book (#203)
  • tools: Read text hidden by position (#205)
  • block: Open what gpg --symmetric writes (#206)
  • Recover classical cipher keys (#211)
  • Serve the tools from ciphers.agntn.dev/mcp (#212)

🩹 Fixes

  • docs: Read number fields in the playground (#195)
  • docs: Build the site on Node.js 26 (#197)
  • classical: Let a book run on one line (#213)

💅 Refactors

  • Take hex and base64 from encodings (#196)

📖 Documentation

  • Point base encodings at @agntn/encodings (#188)

🏡 Chore

  • Add CODEOWNERS (#200)

⚠️ Breaking Changes

  • ⚠️ Say what each cipher works on (#190)

❤️ Contributors

v0.5.2

Choose a tag to compare

@oritwoen oritwoen released this 02 Oct 09:22
Immutable release. Only release title and notes can be modified.

compare changes

🚀 Enhancements

  • classical: Add the straddling checkerboard (#181)
  • classical: Read grids along spiral routes (#184)

📖 Documentation

  • guide: Add --bytes to the CLI flags table (#183)

❤️ Contributors

v0.5.1

Choose a tag to compare

@oritwoen oritwoen released this 01 Oct 19:35
Immutable release. Only release title and notes can be modified.

compare changes

🚀 Enhancements

  • aes: Run CTR on raw bytes (#174)
  • stream: XOR bytes under a repeating key (#175)
  • stream: Point XOR decode errors at hex bytes (#177)

🩹 Fixes

  • block: Read openssl enc output over SHA-256 (#172)

❤️ Contributors

v0.5.0

Choose a tag to compare

@oritwoen oritwoen released this 01 Oct 14:50
Immutable release. Only release title and notes can be modified.

compare changes

🚀 Enhancements

  • block: Decode CryptoJS passphrase output (#141)
  • tools: Add ciphers_period_estimate (#142)
  • docs: Let the playground estimate periods (#144)
  • tools: Guess the cipher family (#145)
  • stream: Add RC4 (#149)

🩹 Fixes

  • brute: Rank English shifts by letter pairs (#137)
  • bacon: Decode only whole groups of five (#148)
  • docs: Let @agntn releases past minimumReleaseAge (#150)
  • adfgvx: Refuse codes that aren't whole pairs (#152)

💅 Refactors

  • mars: Take SHA-1 from hashes (#140)
  • tools: ⚠️ Define each tool once (#146)
  • block: Derive passphrase keys via hashes (#153)

⚠️ Breaking Changes

  • tools: ⚠️ Define each tool once (#146)

❤️ Contributors

v0.4.0

Choose a tag to compare

@oritwoen oritwoen released this 30 Sep 17:18
Immutable release. Only release title and notes can be modified.

compare changes

🚀 Enhancements

  • docs: Instruments, wiring and category tabs (#113)
  • stream: Rabbit opens the stream category (#118)
  • aes: ECB on bytes in its own subpath (#125)
  • tools: ⚠️ Rename the tools to ciphers_* (#128)

🩹 Fixes

  • docs: Page menu stops pointing at a 404 (#130)
  • cli: Plain text when piped or NO_COLOR (#132)
  • playfair: Refuse a key with no letters (#133)
  • columnar: Sort keys the same on every host (#134)

💅 Refactors

  • core: Remove the unused withCipherError (#131)

📖 Documentation

  • Say the package is not audited (#123)
  • Drop the production primitives rule (#124)

📦 Build

  • Take vite-plus 1.0.0 from the catalog (#129)

🏡 Chore

  • ⚠️ Drop Node.js 25 (#126)

✅ Tests

  • loads: Keep the load report off stderr (#115)

⚠️ Breaking Changes

  • tools: ⚠️ Rename the tools to ciphers_* (#128)
  • ⚠️ Drop Node.js 25 (#126)

❤️ Contributors

v0.3.0

Choose a tag to compare

@aeitwoen aeitwoen released this 26 Sep 22:57
Immutable release. Only release title and notes can be modified.

compare changes

🚀 Enhancements

  • ⚠️ File ciphers under a category (#78)
  • block: AES in ECB mode (#80)
  • block: Triple DES with two or three keys (#81)
  • block: AES-LRW, a tweak for every block (#82)
  • block: AES-CBC, each block tied to the last (#83)
  • block: Run AES as a keystream in CFB (#84)
  • block: Count blocks up with AES-CTR (#85)
  • block: AES-CCM refuses a forged tag (#86)
  • block: OFB loops AES over its own output (#87)
  • block: Add aes-ocb (#88)
  • block: Chain Triple DES blocks with CBC (#90)
  • block: Rijndael with blocks up to 256 bits (#91)
  • block: AES-XTS steals the short last block (#92)
  • block: AES-CBC-MAC tags text, hides nothing (#93)
  • block: Blowfish, keyed S-boxes from pi (#94)
  • mcp: Run the checkout's source, not dist (#98)
  • brute: CLI puts the best --lang fit first (#100)
  • block: DES on its own, not only in 3DES (#103)
  • block: Wrap DES in two XOR keys as DESX (#104)
  • block: IDEA from PGP 2, no tables at all (#105)
  • block: Lucifer as Sorkin fixed it in 1984 (#106)
  • block: MARS, its S-box grown from SHA-1 (#107)
  • block: Serpent runs its S-boxes bitslice (#108)

🩹 Fixes

  • release: Leave CHANGELOG to changelogen (#79)
  • Block cipher lists follow the registry (#96)
  • cli: Stop quietly when the pipe closes (#99)
  • tools: Say serpent needs a key (#111)

💅 Refactors

  • block: Shared base for block ciphers (#109)

📖 Documentation

  • agents: MCP answers in text, no details (#101)
  • guide: List every option the tools take (#110)

⚠️ Breaking Changes

  • ⚠️ File ciphers under a category (#78)

❤️ Contributors

v0.2.0

Choose a tag to compare

@aeitwoen aeitwoen released this 23 Sep 20:40
Immutable release. Only release title and notes can be modified.

compare changes

🚀 Enhancements

  • brute: Rank Caesar shifts by letter fit (#67)
  • adfgvx: Transpose with a second key (#69)
  • frequency: Japanese romaji as ja (#73)

🔥 Performance

  • brute: Only the top shift comes back whole (#70)

🩹 Fixes

  • frequency: Unknown --lang is an error (#64)
  • morse: Leave unknown tokens alone (#65)
  • package: Keep docs and tests out of npm (#66)
  • columnar: ⚠️ Drop the rate limiter (#68)
  • frequency: Polish gets its own IC (#71)
  • resolve: An unknown name lists the real ones (#72)

🤖 CI

  • Test every pull request (#74)

⚠️ Breaking Changes

  • columnar: ⚠️ Drop the rate limiter (#68)

❤️ Contributors

v0.1.9

Choose a tag to compare

@aeitwoen aeitwoen released this 19 Sep 16:13
Immutable release. Only release title and notes can be modified.

compare changes

🩹 Fixes

  • cli: The usage path imports the MCP SDK (#58)
  • docs: The site counts the ciphers it ships (#59)
  • mcp: Tell the model which cipher needs a key (#60)

🏡 Chore

❤️ Contributors