2个版本
0.1.1 | 2024年7月17日 |
---|---|
0.1.0 | 2024年2月13日 |
#931 在 密码学
123 每月下载量
46KB
628 行
Rust 密码学基本操作
此仓库包含了一组在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_2
,MIX_COLUMNS_LOOKUP_3
,MIX_COLUMNS_LOOKUP_9
,MIX_COLUMNS_LOOKUP_11
,MIX_COLUMNS_LOOKUP_13
,MIX_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_encrypt
和 sub_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