#基本操作 #加密解密 #算法 #网络 #路由 #替换-排列

cryptographic_primitives

一个提供密码学基本操作的crate

2个版本

0.1.1 2024年7月17日
0.1.0 2024年2月13日

#931密码学

Download history 3/week @ 2024-07-01 101/week @ 2024-07-15 19/week @ 2024-07-22 3/week @ 2024-07-29

123 每月下载量

MIT 协议

46KB
628

Rust 密码学基本操作

github crates.io docs.rs

此仓库包含了一组在Rust中实现的密码学基本操作。目标是提供一套易于使用且难以误用的完整密码学基本操作集。

这个crate是作为一个个人项目完成的,目的是学习和使用Rust和密码学,实现了我大学“安全与可靠系统”课程中学到的某些算法。代码是开源的,我乐于接受贡献和反馈。请随意在此仓库上提交问题或拉取请求。

如果这个crate对您有用,请在GitHub上给它加星 :)

功能

该crate目前提供了以下密码学基本操作,并为每个操作提供了加密和解密函数

  • 栅栏密码
  • 路线密码
  • Feistel网络
  • 替换-排列网络(SPN)
  • 高级加密标准(AES)

以下密码学基本操作计划在未来实现

  • 电子密码本(ECB)模式
  • 密码块链(CBC)模式
  • 计数器(CTR)模式
  • 输出反馈(OFB)模式
  • Rivest-Shamir-Adleman(RSA)算法

helpers模块为密码学算法提供了以下辅助函数

  • rotl8
  • initialize_aes_sbox
  • permute
  • feistel_round_function
  • kdf
  • gmix_column
  • gmix_column_inv

constants模块为密码学算法提供了一些有用的常量,例如

  • 和示例 S-Box
  • 一个示例 P-Box
  • MIX_COLUMNS_LOOKUP_2MIX_COLUMNS_LOOKUP_3MIX_COLUMNS_LOOKUP_9MIX_COLUMNS_LOOKUP_11MIX_COLUMNS_LOOKUP_13MIX_COLUMNS_LOOKUP_14 查找表用于AES MixColumns操作

对于任何建议或请求,请自由地在此存储库上创建一个问题:这个存储库

使用方法

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

[dependencies]
cryptographic_primitives = "0.1.0"

您还可以使用 cargo 将依赖项添加到您的 Cargo.toml

cargo add cryptographic_primitives

然后,只需导入该包并使用加密原语

use cryptographic_primitives::*;

示例

以下是一个使用 sub_per_box_encryptsub_per_box_decrypt 函数使用替换-置换网络(SPN)算法加密和解密消息的示例。

use cryptographic_primitives::{sub_per_box_encrypt, sub_per_box_decrypt};

let plaintext = b"Hello, world!";
// key = 15, rounds = 3
let ciphertext = sub_per_box_encrypt(plaintext, 15, 3).unwrap();
let decrypted = sub_per_box_decrypt(&ciphertext, 15, 3).unwrap();

assert_eq!(plaintext.to_vec(), decrypted);

许可证

本项目采用MIT许可证

依赖项

约1.5MB
约34K SLoC