3个版本
0.1.2 | 2023年6月1日 |
---|---|
0.1.1 | 2023年6月1日 |
0.1.0 | 2023年6月1日 |
#931 在 加密学
每月 27 次下载
17KB
255 行
RC5加密算法的Rust实现
此包实现了Ronald Rivest在此论文中描述的RC5算法:[链接](https://www.grc.com/r&d/rc5.pdf)
构建
在此项目的根目录下运行
$ cargo build
运行测试
在此项目的根目录下运行
$ cargo test
这将运行所有单元测试和文档测试。
使用方法
使用此包最简单的方法是调用encrypt_default
或decrypt_default
函数。它们将使用算法的RC5/32/12/16变体来加密或解密字节数组,这是作者推荐的变体。
use rc5::{encrypt_default, decrypt_default};
let key = [
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B,
0x0C, 0x0D, 0x0E, 0x0F,
];
let pt = vec![0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77];
let ct = encrypt_default(key, &pt).unwrap();
let res = decrypt_default(key, &ct).unwrap();
assert_ne!(pt, ct);
assert_eq!(pt, res);
如果您要加密或解密大量数据,则最好使用上下文对象以节省密钥生成步骤的时间,并在所有加密/解密调用中仅提前执行一次。
let context = rc5::Context::new(key, rounds)?;
let ciphertext = context.encrypt(&plaintext)?;
let plaintext = context.decrypt(&ciphertext)?;
Context
类型可以按以下方式参数化
- 应指定字大小为类型参数W(默认为
u32
)
let context = rc5::Context::<u64>::new(key, rounds)?;
- 轮数是
Context
构造函数上的参数。 - 密钥大小是构造函数中
key
参数中字向量的大小。
许可证
GPL-3
依赖关系
~0.7–1.3MB
~28K SLoC