4 个版本

0.2.7 2024 年 1 月 3 日
0.2.6 2023 年 12 月 26 日
0.2.3 2023 年 12 月 9 日
0.2.2 2023 年 12 月 9 日

#385 in 密码学

每月 41 次下载

MITLGPL-3.0+

210KB
4K SLoC

铁锈加密库

这个库目前处于预预预预alpha版本,因此不建议在生产环境中使用,文档也不准确。

这是一个在参加加密课程时使用的Rust实现的密码算法集合。

项目结构可能会在未来发生变化,但到目前为止,它是一个包含所有算法作为函数的单个crate。未来我可能会为每个算法创建结构体,并实现EncryptDecrypt特性。

实现的算法

  • 仿射希尔(自定义算法)
  • 伯内尔-斐波那契(自定义算法)
  • 双分密码
  • 凯撒
  • DES
  • 双重病囊(自定义算法)
  • 恩尼格玛
  • 小RSA(自定义算法)
  • 米尼玛(自定义算法)
  • 希尔(尚未实现解密,但可以手动进行解密以获取新密钥)
  • 单字母表
  • MIX(自定义算法)
  • 病囊(自定义算法)
  • 转置(尚未实现解密)
  • 三重DES(自定义算法)
  • Vernam
  • Vernam (LKG28)
  • 维吉尼亚
  • 沃科恩(自定义算法)

使用方法

添加到您的项目中

将以下内容添加到您的 Cargo.toml

从 Gitlab

[dependencies]
ferric_crypto_lib = { git = "https://gitlab.com/ferric1/ferric_crypto.git" }

从路径

[dependencies]
ferric_crypto_lib = { path = "/path/to/ferric_crypto" }

在您的代码中使用

所有算法都在 ferric_crypto_lib crate 中实现为函数。要使用它们,只需导入crate并调用您想要使用的函数。所有加密函数都在 encrypt 模块中,所有解密函数都在 decrypt 模块中。

示例

TODO:修复示例

use ferric_crypto_lib::encrypt::ceasar::*;
use ferric_crypto_lib::decrypt::ceasar::*;

fn main() {
    let encrypted = encrypt("Hello World");
    let decrypted = decrypt(&encrypted);
    println!("Encrypted: {}", encrypted);
    println!("Decrypted: {}", decrypted);
}

构建

先决条件

您需要一些工具来构建库,单击链接以获取安装说明

安装先决条件后,按照以下步骤构建

1. 克隆仓库

使用 HTTPS

```bash
git clone https://gitlab.com/ferric1/ferric_crypto.git
```

使用 SSH

```bash
git clone git@gitlab.com:ferric1/ferric_crypto.git
```

2. 测试库

这是可选的,但建议这么做

just test

3. 构建库

为 Rust 构建

just build

为 Python 构建

在这里您需要 Maturin 来构建

just build-py

4. 安装库

如果您打算在一个Python项目中使用这个库,您需要安装它。这可以通过以下命令完成:

just install-py

这将强制安装它到您的Python环境中,这样我们在开发过程中安装新版本时就不需要先卸载它。

开发

添加加密算法

要添加一个新算法,只需运行以下命令:

just add-algo <name>

这将创建一个名为 <name>.rs 的新文件在 src 文件夹中,并将以下代码添加到其中:

use crate::error::CharacterParseError;
use crate::Traits::{Encrypt, Decrypt};

/// Enum representing possible errors in the name cipher.
#[derive(Debug, PartialEq)]
pub enum nameError {
    CharacterParseError(CharacterParseError),
    // Define error variants here
}

/// Represents a name cipher.
#[cfg_attr(feature = "python-integration", pyclass)]
pub struct name {
    // Define struct fields here
}

impl name {
    // Define methods here
    fn new() -> Self {
        Self {
            // Define struct fields here
        }
    }
}

#[cfg(feature = "python-integration")]
mod python_integration {
    use super::*;
    use pyo3::prelude::*;
    use pyo3::{pyclass, PyResult, pymethods};

    #[pymethods]
    impl name {
        // Define Python integration methods here
    }
}

其中,我们将 name 替换为新算法的名称。这还将新算法添加到 mod.rs 文件,位于 src/crypto_systems 文件夹内。我们还在各自的模块中为 EncryptDecryptBruteForce 特性创建了新的标准文件,这是算法实现的所在之处。

您还需要将新算法添加到定义Python模块的 lib.rs 文件中。

许可证

本项目采用MIT许可证,有关详细信息请参阅LICENSE 文件。

所有者

依赖关系

~35MB
~677K SLoC