#密码 #Playfair #加密解密 #four-square #two-square

playfair_cipher

实现Playfair、双平方和四平方密码

11个版本

0.3.5 2024年3月1日
0.3.4 2023年4月30日
0.2.3 2023年1月21日
0.1.0 2023年1月14日

密码学中排名#326

Download history 8/week @ 2024-04-01

每月下载量267

AGPL-3.0-or-later

43KB
828 代码行

通用

该包包含playfair、双平方和四平方密码。注意,这些都是计算机前的密码。不要用它们保护任何有价值的数据。这些密码都可以在极短的时间内被破解。

当使用加密方法时,有效载荷会被转换为大写,并且任何不在A..I和K..Z范围内的字符都会被忽略。例如,“我想买4罐果酱。”变成“IWOULDLIKETINSOFIAM”。所以,使用这个库时不需要清除不可加密的字符。

playfair_cipher

PlayFair密码的实现 - 没有什么特别的,没有什么有用的,只是好玩。

加密

use playfair_cipher::{playfair::PlayFairKey, errors::CharNotInKeyError};
use use playfair_cipher::cryptable::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),
};

解密

use playfair_cipher::playfair::PlayFairKey as PlayFairKey;
use playfair_cipher::errors::CharNotInKeyError as CharNotInKeyError;
use playfair_cipher::cryptable::Cypher;

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

four_square_ciper

四平方密码的实现 - 没有什么特别的,没有什么有用的,只是好玩。

加密

use playfair_cipher::{four_square::FourSquare, errors::CharNotInKeyError};
use playfair_cipher::cryptable::Cypher;

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

解密

use playfair_cipher::{four_square::FourSquare, errors::CharNotInKeyError};
use playfair_cipher::cryptable::Cypher;

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

two_square_ciper

双平方密码的实现 - 没有什么特别的,没有什么有用的,只是好玩。

加密

use playfair_cipher::{two_square::TwoSquare, errors::CharNotInKeyError};
use playfair_cipher::cryptable::Cypher;

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

解密

use playfair_cipher::{two_square::TwoSquare, errors::CharNotInKeyError};
use playfair_cipher::cryptable::Cypher;

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

就这些。

无运行时依赖