ncr

Crates.ioncr
lib.rsncr
version0.1.2
sourcesrc
created_at2023-01-13 14:22:46.69169
updated_at2023-05-21 10:42:15.687887
descriptionRust implementation of chat encryption in the Minecraft mod No Chat Reports
homepage
repositoryhttps://github.com/ALaggyDev/ncr-rs
max_upload_size
id757950
size43,018
ALaggyDev (ALaggyDev)

documentation

README

No Chat Reports (NCR) Chat Encryption

This crate implements the No Chat Reports's custom chat encryption. More specifically this implements a fork of No Chat Reports.

All functionalities of the custom chat encryption are implemented. You can still use this crate normally if you are using the original No Chat Reports.

  • Caesar, Ecb, Cfb8 and Gcm encryption
  • Base64 (old), Base64r, Sus16 and Mc256 encoding
  • Passphrase

Examples

Encrypting

use ncr::{
    encoding::Base64rEncoding,
    encryption::{Cfb8Encryption, Encryption},
    utils::prepend_header,
    AesKey,
};

let key = AesKey::gen_from_passphrase(b"secret");

let plaintext = prepend_header("I love Minecraft!");
let ciphertext = Cfb8Encryption::<Base64rEncoding>::encrypt(&plaintext, &key).unwrap();

println!("{}", ciphertext);

Decrypting

use ncr::{
    encoding::Base64rEncoding,
    encryption::{Cfb8Encryption, Encryption},
    utils::trim_header,
    AesKey,
};

let key = AesKey::gen_from_passphrase(b"secret");

let ciphertext = r#"%[2_0»³"!7).«?;!.$¥`¶:8~667ª¸[¬)¢+¤^"#;
let plaintext = Cfb8Encryption::<Base64rEncoding>::decrypt(ciphertext, &key).unwrap();

let plaintext = trim_header(&plaintext).unwrap();

assert_eq!(plaintext, "I love Minecraft!");
Commit count: 8

cargo fmt