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
每月下载量267
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),
};
就这些。