#encryption-decryption #encryption #aes #des #decryption #key-length #block-cipher

no-std magic-crypt

MagicCrypt is a Java/PHP/NodeJS/Rust library to encrypt/decrypt strings, files, or data, using Data Encryption Standard(DES) or Advanced Encryption Standard(AES) algorithms. It supports CBC block cipher mode, PKCS7 padding and 64, 128, 192 or 256-bits key length.

30 stable releases

4.0.1 Nov 2, 2024
3.1.13 Nov 10, 2023
3.1.12 Oct 14, 2022
3.1.10 Mar 17, 2022
2.1.4 Nov 14, 2018

⚠️ Issues reported

#141 in Cryptography

Download history 3515/week @ 2024-11-21 2887/week @ 2024-11-28 3441/week @ 2024-12-05 3305/week @ 2024-12-12 1824/week @ 2024-12-19 1429/week @ 2024-12-26 2173/week @ 2025-01-02 2675/week @ 2025-01-09 3377/week @ 2025-01-16 3469/week @ 2025-01-23 2738/week @ 2025-01-30 4201/week @ 2025-02-06 3525/week @ 2025-02-13 4098/week @ 2025-02-20 4054/week @ 2025-02-27 2975/week @ 2025-03-06

15,350 downloads per month
Used in 25 crates (21 directly)

Apache-2.0

50KB
1K SLoC

MagicCrypt

CI

MagicCrypt is a Java/PHP/NodeJS/Rust library to encrypt/decrypt strings, files, or data, using Data Encryption Standard(DES) or Advanced Encryption Standard(AES) algorithms. It supports CBC block cipher mode, PKCS7 padding and 64, 128, 192 or 256-bits key length.

For Rust

Example

use magic_crypt::{new_magic_crypt, MagicCryptTrait};

let mc = new_magic_crypt!("magickey", 256);

let base64 = mc.encrypt_str_to_base64("http://magiclen.org");

assert_eq!("DS/2U8royDnJDiNY2ps3f6ZoTbpZo8ZtUGYLGEjwLDQ=", base64);

assert_eq!("http://magiclen.org", mc.decrypt_base64_to_string(&base64).unwrap());

Change the Buffer Size

The default buffer size for the encrypt_reader_to_writer method and the decrypt_reader_to_writer method is 4096 bytes. If you want to change that, you can use the encrypt_reader_to_writer2 method or the decrypt_reader_to_writer2 method, and define a length explicitly.

For example, to change the buffer size to 256 bytes,

use std::io::Cursor;

use base64::Engine;
use magic_crypt::{new_magic_crypt, MagicCryptTrait};
use magic_crypt::generic_array::typenum::U256;

let mc = new_magic_crypt!("magickey", 256);

let mut reader = Cursor::new("http://magiclen.org");
let mut writer = Vec::new();

mc.encrypt_reader_to_writer2::<U256>(&mut reader, &mut writer).unwrap();

let base64 = base64::engine::general_purpose::STANDARD.encode(&writer);

assert_eq!("DS/2U8royDnJDiNY2ps3f6ZoTbpZo8ZtUGYLGEjwLDQ=", base64);

assert_eq!("http://magiclen.org", mc.decrypt_base64_to_string(&base64).unwrap());

No Std

Disable the default features to compile this crate without std.

[dependencies.magic-crypt]
version = "*"
default-features = false

Crates.io

https://crates.io/crates/magic-crypt

Documentation

https://docs.rs/magic-crypt

For Java

Refer to https://github.com/magiclen/MagicCrypt.

For PHP

Refer to https://github.com/magiclen/MagicCrypt.

For NodeJS

Refer to https://github.com/magiclen/node-magiccrypt.

License

Apache-2.0

What's More?

Please check out our web page at

https://magiclen.org/aes/

Dependencies

~1.5MB
~34K SLoC