#encryption #base64 #hash #data-encoding #rfc #command-line-tool #codes

bin+lib encodex

Implementation of and cryptanalysis tool for legacy and modern codes, ciphers and hashes

6 releases

0.2.0 Oct 9, 2024
0.1.12 Nov 14, 2023
0.1.7 Apr 30, 2022
0.0.1 Apr 24, 2022

#249 in Cryptography

GPL-3.0-or-later

350KB
5.5K SLoC

En-Codex

A command line tool and library for several codes, ciphers and hashes. See features section for a comprehensive list of supported features. For information about how to use this crate please use cargo doc --all-features from within the project folder and read the generated documentation.


I develop this library/cli-tool mostly for lectures at university and understanding how all the codes, ciphers and digest-algorithms work internally. It is not intended for use in production code.

If you still decide to use this library in production code or to play around with it, every constructive feedback is appreciated.



Features

The following list is a complete overview of all implemented features. Unchecked features are not yet implemented.

The names of the highlighted features in this list match the names of features in the Cargo.toml file. The list below the names is the functionality that will be enabled by the feature.


Ciphers

Caesar

  • Encrypting
  • Decrypting
  • Test vectors

Vigenère

  • Encrypting
  • Decrypting
  • Test vectors

Codes

RFC 4648 - The Base16, Base32, and Base64 Data Encodings

  • base64
    • Encoding
    • Decoding
    • Test vectors (from RFC 4648 - 10)
  • base64url en- and decoding
    • Encoding
    • Decoding
    • Test vectors
  • base32
    • Encoding
    • Decoding
    • Choose between upper- and lowercase
    • Test vectors (from RFC 4648 - 10)
  • base32hex
    • Encoding
    • Decoding
    • Choose between upper- and lowercase
    • Test vectors (from RFC 4648 - 10)
  • base16 / hex
    • Encoding
    • Decoding
    • Choose between upper- and lowercase
    • Test vectors (from RFC 4648 - 10)
  • Option for adding line feed after a certain amount of characters (RFC 4648 - 3.1)
  • Option for conditionally not adding padding bytes? Or different padding bytes? (RFC 4648 - 3.2)
  • Option for ignoring non-alphabet characters in base encoded data? (RFC 4648 - 3.3)
  • Option to change used alphabet for specific uses (RFC 4648 - 3.4)

Cryptanalysis

  • cryptanalysis
    • Caesar
    • Vigenère

Digests

SHA-2

  • SHA-224
  • SHA-256
  • SHA-384
  • SHA-512
  • SHA-512/224
  • SHA-512/256

UI elements

  • ui
    • Perform non-interactive encode,decode,encrypt,decrypt or hash operation
    • Use program interactively
    • Chain multiple cryptographic atoms

License

This program is released under the GNU General Public License. See COPYING for additional information about the license.

Contact

For any other question contact me at fabian.moos@moosegamesdev.org.

No runtime deps

Features