2个不稳定版本
0.2.0 | 2021年5月21日 |
---|---|
0.1.0 | 2021年2月24日 |
#1963 in 密码学
190KB
4K SLoC
classic_crypto
在Rust中实现了一些经典密码,并能够为任何语言提供字符集。
命令行界面
此库有一个可用的命令行界面 这里.
用法
将此行添加到您的 Cargo.toml
classic_crypto = "0.1.0"
示例
use classic_crypto::{Asymmetric, Caesar, Keyed, Solve, lang::Language};
fn main() {
let mut language = Language::from_file("examples/data/english.bin").unwrap();
let mut caesar = Caesar::new(&mut language);
caesar.randomize(&mut language);
let plaintext = "Secret message!";
let ciphertext = caesar.encrypt(&mut language, plaintext);
caesar.randomize(&mut language);
caesar.solve(&mut language, &ciphertext);
let plaintext = caesar.decrypt(&mut language, &ciphertext);
println!("plaintext {}", plaintext);
}
支持的密码
名称 | 加密/解密 | 解决 |
---|---|---|
ADFGVX | ⬜️ | ⬜️ |
ADFGX | ⬜️ | ⬜️ |
仿射 | ✅ | ✅ |
Atbash | ✅ | N/A |
Autokey | ✅ | ✅ |
Baconian | ✅ | N/A |
Beaufort | ✅ | ✅ |
Bellaso | ✅ | ✅ |
Bifid | ⬜️ | ⬜️ |
块转置 | ✅ | ✅ |
凯撒 | ✅ | ✅ |
Chaocipher | ⬜️ | ⬜️ |
经典维吉尼亚 | ✅ | ✅ |
时钟 | ✅ | ✅ |
Chase | ✅ | ✅ |
列转置 | ✅ | ✅ |
Enigma M3/M4 | ✅ | ⬜️ |
Fialka | ⬜️ | ⬜️ |
四方形 | ⬜️ | ⬜️ |
分数莫尔斯 | ⬜️ | ⬜️ |
Hill(2x2和3x3矩阵) | ⬜️ | ⬜️ |
同音替代 | ⬜️ | ⬜️ |
密钥维吉尼亚 | ✅ | ⬜️ |
Lorenz | ⬜️ | ⬜️ |
莫尔斯 | ✅ | N/A |
Myszkowski转置 | ⬜️ | ⬜️ |
Playfair | ⬜️ | ⬜️ |
Polybius正方形 | ⬜️ | ⬜️ |
Porta | ✅ | ✅ |
Purple | ⬜️ | ⬜️ |
Railfence | ✅ | ✅ |
Rot13 | ✅ | N/A |
Scytale | ✅ | ✅ |
简单替代 | ✅ | ✅ |
Solitaire | ⬜️ | ⬜️ |
交叉棋盘 | ⬜️ | ⬜️ |
三叶草 | ⬜️ | ⬜️ |
双方形 | ⬜️ | ⬜️ |
Typex | ⬜️ | ⬜️ |
VIC | ⬜️ | ⬜️ |
依赖项
~0.9–1.5MB
~34K SLoC