#stream-cipher #cipher #block-mode #belt #crypto

无std belt-ctr

符合BelT标准的CTR块操作模式

2个不稳定版本

0.1.0 2023年4月2日
0.0.0 2023年3月3日

#2606 in 密码学


用于bevy_asset_packer

MIT/Apache

10KB
163

RustCrypto: belt-ctr

crate Docs Apache2/MIT licensed Rust Version Project Chat Build Status

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