5 个版本 (3 个重大更改)
0.4.0 | 2023年11月29日 |
---|---|
0.3.0 | 2021年5月10日 |
0.2.0 | 2021年4月20日 |
0.1.1 | 2021年1月20日 |
0.1.0 | 2021年1月9日 |
#783 in 密码学
每月 26 次下载
59KB
1K SLoC
同步加密算法 "库兹涅茨基"(GOST R 34.12-2015,GOST R 34.13-2015)
Rust 语言实现 "库兹涅茨基" 块同步加密算法。
加密模式
结构体 | 标题 | 缩减 |
---|---|---|
AlgEcb | 电子密码本 | ЕСВ |
AlgCtr | 计数器 | CTR |
AlgOfb | 输出反馈 | OFB |
AlgCbc | 密文块链接 | СВС |
AlgCfb | 密文反馈 | CFB |
AlgMac | 消息认证码 | MAC |
使用 (AlgOfb)
以下示例使用 OFB 方法加密和解密一个 64 字节的数据块 data
。使用其他方法加密类似,有些不需要 gamma(更多详情见 tests.rs)。
extern crate kuznechik;
use self::kuznechik::{KeyStore, Kuznechik, AlgOfb};
fn main() {
// Initialization
let password = "Kuznechik";
let data = Vec::from("Hello, World!");
let gamma = vec![
0x12, 0x34, 0x56, 0x78, 0x90, 0xab, 0xce, 0xf0, 0xa1, 0xb2, 0xc3, 0xd4, 0xe5, 0xf0, 0x01, 0x12,
0x23, 0x34, 0x45, 0x56, 0x67, 0x78, 0x89, 0x90, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19,
];
let kuz = KeyStore::with_password(password);
let mut cipher = AlgOfb::new(&kuz).gamma(gamma.clone());
// Encryption
let enc_data = cipher.encrypt(data.clone());
// Decryption
// Setting gamma again because OFB algorithm modify it during performing
cipher.set_gamma(gamma);
let dec_data = cipher.decrypt(enc_data);
// Assert
assert_eq!(data, dec_data);
}
依赖项
~1MB