General

The crate contains the playfair, the two square and the four square cipers. Note all of the are pre computer cipers. Do not feel like protecting data of any value with them. Both are crackable in very short time.

When using the method encrypt the payload is converted to uppercase and any character not within the range A..I and K..Z is ignored. E.g. "I would like 4 tins of jam." becomes "IWOULDLIKETINSOFIAM". So you don't need to clear off not encryptable characters when using this library.

playfair_cipher

Implementation of the PlayFair cipher - nothing special, nothing useful, just for fun.

Encrypt

```rust use playfaircipher::{playfair::PlayFairKey, errors::CharNotInKeyError}; use crate::playfaircipher::playfair::Cypher;

let pfc = PlayFairKey::new("playfair example"); match pfc.encrypt("hide the gold in the tree stump") { Ok(crypt) => { assert_eq!(crypt, "BMODZBXDNABEKUDMUIXMMOUVIF"); } Err(e) => panic!("CharNotInKeyError {}", e), }; ```

Decrypt

```rust use playfaircipher::playfair::PlayFairKey as PlayFairKey; use playfaircipher::errors::CharNotInKeyError as CharNotInKeyError; use playfair_cipher::playfair::Cypher;

let pfc = PlayFairKey::new("playfair example"); match pfc.decrypt("BMODZBXDNABEKUDMUIXMMOUVIF") { Ok(crypt) => { assert_eq!(crypt, "HIDETHEGOLDINTHETREXESTUMP"); } Err(e) => panic!("CharNotInKeyError {}", e), }; ```

foursquareciper

Implementation of the FourSquare cipher - nothing special, nothing useful, just for fun.

Encrypt

```rust use playfaircipher::{foursquare::FourSquare, errors::CharNotInKeyError}; use playfair_cipher::playfair::Cypher;

let fsq = FourSquare::new("EXAMPLE", "KEYWORD"); match fsq.encrypt("joe") { Ok(crypt) => { assert_eq!(crypt, "DIAZ"); } Err(e) => panic!("CharNotInKeyError {}", e), }; ```

Decrypt

```rust use playfaircipher::{foursquare::FourSquare, errors::CharNotInKeyError}; use crate::playfair_cipher::playfair::Cypher;

let fsq = FourSquare::new("EXAMPLE", "KEYWORD"); match fsq.decrypt("DIAZ") { Ok(crypt) => { assert_eq!(crypt, "IOEX"); } Err(e) => panic!("CharNotInKeyError {}", e), }; ```

twosquareciper

Implementation of the TwoSquare cipher - nothing special, nothing useful, just for fun.

Encrypt

```rust use playfaircipher::{twosquare::TwoSquare, errors::CharNotInKeyError}; use playfair_cipher::playfair::Cypher;

let tsq = TwoSquare::new("EXAMPLE", "KEYWORD"); match tsq.encrypt("joe") { Ok(crypt) => { assert_eq!(crypt, "NYMT"); } Err(e) => panic!("CharNotInKeyError {}", e), }; ```

Decrypt

```rust use playfaircipher::{twosquare::TwoSquare, errors::CharNotInKeyError}; use playfair_cipher::playfair::Cypher;

let tsq = TwoSquare::new("EXAMPLE", "KEYWORD"); match tsq.decrypt("NYMT") { Ok(crypt) => { assert_eq!(crypt, "IOEX"); } Err(e) => panic!("CharNotInKeyError {}", e), }; ```

That's it.