{"id":13531325,"url":"https://github.com/RustCrypto/block-ciphers","last_synced_at":"2025-04-01T19:31:52.125Z","repository":{"id":14506136,"uuid":"76649021","full_name":"RustCrypto/block-ciphers","owner":"RustCrypto","description":"Collection of block cipher algorithms written in pure Rust","archived":false,"fork":false,"pushed_at":"2025-03-07T14:31:13.000Z","size":2624,"stargazers_count":704,"open_issues_count":12,"forks_count":136,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-03-31T17:12:51.770Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RustCrypto.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-12-16T11:35:26.000Z","updated_at":"2025-03-30T12:01:15.000Z","dependencies_parsed_at":"2023-01-13T17:59:00.108Z","dependency_job_id":"de1e4d21-bf5c-4597-a23b-24383fb2ce30","html_url":"https://github.com/RustCrypto/block-ciphers","commit_stats":{"total_commits":481,"total_committers":52,"mean_commits":9.25,"dds":0.5467775467775468,"last_synced_commit":"4da9b802de52a3326fdc74d559caddd57042fed2"},"previous_names":[],"tags_count":191,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RustCrypto%2Fblock-ciphers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RustCrypto%2Fblock-ciphers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RustCrypto%2Fblock-ciphers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RustCrypto%2Fblock-ciphers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RustCrypto","download_url":"https://codeload.github.com/RustCrypto/block-ciphers/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246599203,"owners_count":20803160,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T07:01:02.063Z","updated_at":"2025-04-01T19:31:52.115Z","avatar_url":"https://github.com/RustCrypto.png","language":"Rust","funding_links":[],"categories":["Rust","Cryptography"],"sub_categories":["Symmetric cryptography"],"readme":"# RustCrypto: block ciphers\n\n[![Project Chat][chat-image]][chat-link]\n[![dependency status][deps-image]][deps-link]\n![Apache2/MIT licensed][license-image]\n[![HAZMAT][hazmat-image]][hazmat-link]\n\nCollection of [block ciphers] written in pure Rust.\n\n## Higher level constructions\n\nCrates in this repository implement ONLY raw block cipher functionality defined by traits in the [`cipher`] crate.\nIn practice block ciphers are rarely used in isolation.\nInstead, they usually play role of a building block for higher level constructions.\nIn RustCrypto such constructions are implemented generically over block ciphers in separate repositories:\n- [AEADs](https://github.com/RustCrypto/AEADs): GCM, SIV, CCM, MGM, etc.\n- [MACs](https://github.com/RustCrypto/MACs): CMAC, PMAC.\n- [Block modes](https://github.com/RustCrypto/block-modes): CTR, CBC, CFB, etc.\n- [Key wrapping](https://github.com/RustCrypto/key-wraps): AES-KW. \n\nMost users should use constructions defined in these repositories without directly relying on raw block cipher functionality.\n\n[`cipher`]: https://docs.rs/cipher\n\n## Warnings\n\nCurrently only the `aes` crate provides constant-time implementation and has received a third-party security audit.\n\nOther crates in this repository are not implemented in a constant-time manner and have not yet received any formal cryptographic and security reviews.\n\nIt's generally recommended not to use other cipher implementations in this repository besides the `aes` crate.\n\n**USE AT YOUR OWN RISK.**\n\n## Supported algorithms\n\n| Name | Crate name | crates.io | Docs | MSRV |\n|------|------------|-----------|------|------|\n| [AES] (Rijndael) | [`aes`] | [![crates.io](https://img.shields.io/crates/v/aes.svg)](https://crates.io/crates/aes) | [![Documentation](https://docs.rs/aes/badge.svg)](https://docs.rs/aes) | ![MSRV 1.85][msrv-1.85] |\n| [ARIA] | [`aria`] | [![crates.io](https://img.shields.io/crates/v/aria.svg)](https://crates.io/crates/aria) | [![Documentation](https://docs.rs/aria/badge.svg)](https://docs.rs/aria) | ![MSRV 1.85][msrv-1.85] |\n| [BelT] block cipher | [`belt-block`] | [![crates.io](https://img.shields.io/crates/v/belt-block.svg)](https://crates.io/crates/belt-block) | [![Documentation](https://docs.rs/belt-block/badge.svg)](https://docs.rs/belt-block) | ![MSRV 1.85][msrv-1.85] |\n| [Blowfish] | [`blowfish`] | [![crates.io](https://img.shields.io/crates/v/blowfish.svg)](https://crates.io/crates/blowfish) | [![Documentation](https://docs.rs/blowfish/badge.svg)](https://docs.rs/blowfish) | ![MSRV 1.85][msrv-1.85] |\n| [Camellia] | [`camellia`] | [![crates.io](https://img.shields.io/crates/v/camellia.svg)](https://crates.io/crates/camellia) | [![Documentation](https://docs.rs/camellia/badge.svg)](https://docs.rs/camellia) | ![MSRV 1.85][msrv-1.85] |\n| [CAST5] (CAST-128) | [`cast5`] | [![crates.io](https://img.shields.io/crates/v/cast5.svg)](https://crates.io/crates/cast5) | [![Documentation](https://docs.rs/cast5/badge.svg)](https://docs.rs/cast5) | ![MSRV 1.85][msrv-1.85] |\n| [CAST6] (CAST-256) | [`cast6`] | [![crates.io](https://img.shields.io/crates/v/cast6.svg)](https://crates.io/crates/cast6) | [![Documentation](https://docs.rs/cast6/badge.svg)](https://docs.rs/cast6) | ![MSRV 1.85][msrv-1.85] |\n| [DES] + [3DES] (DEA, 3DEA) | [`des`] | [![crates.io](https://img.shields.io/crates/v/des.svg)](https://crates.io/crates/des) | [![Documentation](https://docs.rs/des/badge.svg)](https://docs.rs/des) | ![MSRV 1.85][msrv-1.85] |\n| [IDEA] | [`idea`] | [![crates.io](https://img.shields.io/crates/v/idea.svg)](https://crates.io/crates/idea) | [![Documentation](https://docs.rs/idea/badge.svg)](https://docs.rs/idea) | ![MSRV 1.85][msrv-1.85] |\n| [Kuznyechik] (GOST R 34.12-2015)  | [`kuznyechik`] | [![crates.io](https://img.shields.io/crates/v/kuznyechik.svg)](https://crates.io/crates/kuznyechik) | [![Documentation](https://docs.rs/kuznyechik/badge.svg)](https://docs.rs/kuznyechik) | ![MSRV 1.85][msrv-1.85] |\n| [Magma] (GOST R 34.12-2015) | [`magma`] | [![crates.io](https://img.shields.io/crates/v/magma.svg)](https://crates.io/crates/magma) | [![Documentation](https://docs.rs/magma/badge.svg)](https://docs.rs/magma) | ![MSRV 1.85][msrv-1.85] |\n| [RC2] (ARC2) | [`rc2`] | [![crates.io](https://img.shields.io/crates/v/rc2.svg)](https://crates.io/crates/rc2) | [![Documentation](https://docs.rs/rc2/badge.svg)](https://docs.rs/rc2) | ![MSRV 1.85][msrv-1.85] |\n| [RC5] | [`rc5`] | [![crates.io](https://img.shields.io/crates/v/rc5.svg)](https://crates.io/crates/rc5) | [![Documentation](https://docs.rs/rc5/badge.svg)](https://docs.rs/rc5) | ![MSRV 1.85][msrv-1.85] |\n| [Serpent] | [`serpent`] | [![crates.io](https://img.shields.io/crates/v/serpent.svg)](https://crates.io/crates/serpent) | [![Documentation](https://docs.rs/serpent/badge.svg)](https://docs.rs/serpent) | ![MSRV 1.85][msrv-1.85] |\n| [SM4] | [`sm4`] | [![crates.io](https://img.shields.io/crates/v/sm4.svg)](https://crates.io/crates/sm4) | [![Documentation](https://docs.rs/sm4/badge.svg)](https://docs.rs/sm4) | ![MSRV 1.85][msrv-1.85] |\n| [Speck] | [`speck-cipher`] | [![crates.io](https://img.shields.io/crates/v/speck-cipher.svg)](https://crates.io/crates/speck-cipher) | [![Documentation](https://docs.rs/speck-cipher/badge.svg)](https://docs.rs/speck-cipher) | ![MSRV 1.85][msrv-1.85] |\n| [Threefish] | [`threefish`] | [![crates.io](https://img.shields.io/crates/v/threefish.svg)](https://crates.io/crates/threefish) | [![Documentation](https://docs.rs/threefish/badge.svg)](https://docs.rs/threefish) | ![MSRV 1.85][msrv-1.85] |\n| [Twofish] | [`twofish`] | [![crates.io](https://img.shields.io/crates/v/twofish.svg)](https://crates.io/crates/twofish) | [![Documentation](https://docs.rs/twofish/badge.svg)](https://docs.rs/twofish) | ![MSRV 1.85][msrv-1.85] |\n| [XTEA] | [`xtea`] | [![crates.io](https://img.shields.io/crates/v/xtea.svg)](https://crates.io/crates/xtea) | [![Documentation](https://docs.rs/xtea/badge.svg)](https://docs.rs/xtea) | ![MSRV 1.85][msrv-1.85] |\n\n## License\n\nAll crates licensed under either of\n\n * [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0)\n * [MIT license](http://opensource.org/licenses/MIT)\n\nat your option.\n\n### Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n\n[//]: # (badges)\n\n[chat-image]: https://img.shields.io/badge/zulip-join_chat-blue.svg\n[chat-link]: https://rustcrypto.zulipchat.com/#narrow/stream/260039-block-ciphers\n[deps-image]: https://deps.rs/repo/github/RustCrypto/block-ciphers/status.svg\n[deps-link]: https://deps.rs/repo/github/RustCrypto/block-ciphers\n[license-image]: https://img.shields.io/badge/license-Apache2.0/MIT-blue.svg\n[hazmat-image]: https://img.shields.io/badge/crypto-hazmat%E2%9A%A0-red.svg\n[hazmat-link]: https://github.com/RustCrypto/meta/blob/master/HAZMAT.md\n[msrv-1.85]: https://img.shields.io/badge/rustc-1.85.0+-blue.svg\n\n[//]: # (crates)\n\n[`aes`]: ./aes\n[`aria`]: ./aria\n[`belt-block`]: ./belt-block\n[`blowfish`]: ./blowfish\n[`camellia`]: ./camellia\n[`cast5`]: ./cast5\n[`cast6`]: ./cast6\n[`des`]: ./des\n[`idea`]: ./idea\n[`kuznyechik`]: ./kuznyechik\n[`magma`]: ./magma\n[`rc2`]: ./rc2\n[`rc5`]: ./rc5\n[`serpent`]: ./serpent\n[`sm4`]: ./sm4\n[`speck-cipher`]: ./speck\n[`threefish`]: ./threefish\n[`twofish`]: ./twofish\n[`xtea`]: ./xtea\n\n[//]: # (links)\n\n[block ciphers]: https://en.wikipedia.org/wiki/Block_cipher\n\n[//]: # (algorithms)\n\n[AES]: https://en.wikipedia.org/wiki/Advanced_Encryption_Standard\n[ARIA]: https://en.wikipedia.org/wiki/ARIA_(cipher)\n[BelT]: https://ru.wikipedia.org/wiki/BelT\n[Blowfish]: https://en.wikipedia.org/wiki/Blowfish_(cipher)\n[Camellia]: https://en.wikipedia.org/wiki/Camellia_(cipher)\n[CAST5]: https://en.wikipedia.org/wiki/CAST-128\n[CAST6]: https://en.wikipedia.org/wiki/CAST-256\n[DES]: https://en.wikipedia.org/wiki/Data_Encryption_Standard\n[3DES]: https://en.wikipedia.org/wiki/Triple_DES\n[IDEA]: https://simple.wikipedia.org/wiki/International_Data_Encryption_Algorithm\n[Kuznyechik]: https://en.wikipedia.org/wiki/Kuznyechik\n[Magma]: https://en.wikipedia.org/wiki/GOST_(block_cipher)\n[RC2]: https://en.wikipedia.org/wiki/RC2\n[RC5]: https://en.wikipedia.org/wiki/RC5\n[Serpent]: https://en.wikipedia.org/wiki/Serpent_(cipher)\n[SM4]: https://en.wikipedia.org/wiki/SM4_(cipher)\n[Speck]: https://en.wikipedia.org/wiki/Speck_(cipher)\n[Threefish]: https://en.wikipedia.org/wiki/Threefish\n[Twofish]: https://en.wikipedia.org/wiki/Twofish\n[XTEA]: https://en.wikipedia.org/wiki/XTEA\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRustCrypto%2Fblock-ciphers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FRustCrypto%2Fblock-ciphers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRustCrypto%2Fblock-ciphers/lists"}