2个不稳定版本
0.1.0 | 2023年4月2日 |
---|---|
0.0.0 | 2023年3月3日 |
#2606 in 密码学
10KB
163 行
RustCrypto: belt-ctr
belt-ctr块操作模式的通用实现。
通过cipher
crate中的特质访问模式功能。
⚠️ 安全警告:危险!
这个crate不能确保密文是真实的!因此密文完整性没有得到验证,这可能导致严重漏洞!AEADs提供了简单的认证加密,这比手动完整性验证要安全得多。
示例
use hex_literal::hex;
use belt_ctr::{BeltCtr, cipher::{KeyIvInit, StreamCipher, StreamCipherSeek}};
let key = &[0x42; 32];
let iv = &[0x24; 16];
let plaintext: &[u8; 34] = b"hello world! this is my plaintext.";
let ciphertext: &[u8; 34] = &hex!(
"38DF06243BD85DA1CAE597CE680D3AFE"
"0EBB372A4F6A858DB2DBE20A63567EED"
"7D1B"
);
let mut cipher: BeltCtr = BeltCtr::new_from_slices(key, iv).unwrap();
// encrypt in-place
let mut buf = plaintext.clone();
cipher.apply_keystream(&mut buf);
assert_eq!(buf[..], ciphertext[..]);
cipher.seek(0);
cipher.apply_keystream(&mut buf);
assert_eq!(buf[..], plaintext[..]);
最小支持的Rust版本
Rust 1.57 或更高。
最小支持的Rust版本可能会在未来更改,但将以小版本号的升级来完成。
SemVer策略
- 本库的所有默认特性都受SemVer保护
- 如上所述,MSRV被视为免于SemVer
许可协议
根据以下之一许可
根据您的选择。
贡献
除非您明确声明,否则根据Apache-2.0许可定义的,您有意提交的任何贡献都应按上述方式双许可,不附加任何额外条款或条件。
依赖关系
~405KB