40 lines
984 B
Rust
40 lines
984 B
Rust
use false_bottom::{FB128, FBKey, FBAlgo, Encode};
|
|
|
|
fn main() {
|
|
// Cipher Initialization
|
|
let mut fb = FB128::init(18, 9);
|
|
|
|
// Encryption
|
|
let msg1 = "This is a message";
|
|
let key1 = fb.add(msg1.as_bytes());
|
|
let msg2 = "This is another message";
|
|
let key2 = fb.add(msg2.as_bytes());
|
|
|
|
// Export as base64
|
|
let (cipher, keybase) = fb.as_base64(); // Careful with the order
|
|
let key1_exp = key1.as_base64();
|
|
// Or as raw bytes
|
|
let key2_exp = key2.as_bytes();
|
|
|
|
// Import from base64
|
|
let fb_new = FB128::from_base64(&cipher, &keybase).unwrap();
|
|
let key1_imp = FBKey::from_base64(&key1_exp).unwrap();
|
|
// Or as raw bytes
|
|
let key2_imp = FBKey::from_bytes(&key2_exp).unwrap();
|
|
|
|
// Decryption
|
|
let decr1 = fb_new.decrypt(&key1_imp).unwrap();
|
|
let decr2 = fb_new.decrypt(&key2_imp).unwrap();
|
|
|
|
// Display
|
|
println!("
|
|
CipherText: \n{cipher}\n
|
|
KeyBase: \n{keybase}\n
|
|
Key 1: {key1_exp}
|
|
Key 2: {key2_exp:?}
|
|
");
|
|
|
|
assert_eq!(msg1.as_bytes(), decr1);
|
|
assert_eq!(msg2.as_bytes(), decr2);
|
|
}
|