FractionatedMorse

Struct FractionatedMorse 

Source
pub struct FractionatedMorse { /* private fields */ }
Expand description

A Fractionated Morse cipher.

This struct is created by the new() method. See its documentation for more.

Trait Implementations§

Source§

impl Cipher for FractionatedMorse

Source§

fn new(key: String) -> FractionatedMorse

Initialise a Fractionated Morse cipher given a specific key.

§Panics
  • The key is empty.
  • The key contains a non-alphabetic symbol.
Source§

fn encrypt(&self, message: &str) -> Result<String, &'static str>

Encrypt a message using a Fractionated Morse cipher.

Morse code supports the characters a-z, A-Z, 0-9 and the special characters @ ( ) . , : ' " ! ? - ; =. This function will return Err if the message contains any symbols that do not meet this criteria. As morse code does not preserve case, all messages will be transposed to uppercase automatically.

§Examples

Basic usage:

use cipher_crypt::{Cipher, FractionatedMorse};

let fm = FractionatedMorse::new(String::from("key"));;
assert_eq!("CPSUJISWHSSPFANR", fm.encrypt("AttackAtDawn!").unwrap());
Source§

fn decrypt(&self, cipher_text: &str) -> Result<String, &'static str>

Decrypt a message using a Fractionated Morse cipher.

The Fractionated Morse alphabet only contains the normal alphabetic characters a-z, therefore this function will return Err if the message contains any non-alphabetic characters. Furthermore, it is possible that a purely alphabetic message will not produce valid Morse code, in which case an Err will again be returned.

§Examples

Basic usage:

use cipher_crypt::{Cipher, FractionatedMorse};

let fm = FractionatedMorse::new(String::from("key"));;
assert_eq!("ATTACKATDAWN!", fm.decrypt("cpsujiswhsspfanr").unwrap());
Source§

type Key = String

Source§

type Algorithm = FractionatedMorse

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.