#cipher #classical #crypto

classic_crypto

使用任何字符集加密、解密和解决经典密码

2个不稳定版本

0.2.0 2021年5月21日
0.1.0 2021年2月24日

#1963 in 密码学

自定义许可证

190KB
4K SLoC

classic_crypto

Build Status

在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