dylanheller/nbpc-rs
GitHub: dylanheller/nbpc-rs
该库用 Rust 实现了基于非二进制极化码的三元隐写嵌入与提取,解决了在最小化失真条件下将消息可靠隐藏进载体数据的问题。
Stars: 1 | Forks: 0
# nbpc-rs
用于三元隐写嵌入的**非二进制极化码 (NBPC)** [1] 的 Rust *O(Ln) 空间* 实现。
## 用法
```
use nbpc_rs::{hide_cpd, unhide_cpd};
let cover: Vec = load_cover();
let (rho_m1, rho_p1): (Vec, Vec) = compute_costs(&cover);
let message = b"hello";
let stego = hide_cpd(&cover, &rho_m1, &rho_p1, message, 4)?;
let message_extracted = unhide_cpd(&stego, message.len() as u32);
assert_eq!(message_extracted, message);
```
## 错误处理:`NBPCError`
- `NBPCError::PaddingCorruption(n)`:`n` 个 padding 位置被解码为非零符号,这意味着在不违反 padding 不变性的情况下无法嵌入请求的 payload。请尝试增大 `l`,或降低 payload 大小
- `NBPCError::OverflowingModification`:必需的 +-1 修改将导致 `U` 溢出(例如 `0` 进行 `-1`,或 `255u8` 进行 `+1`)
- `NBPCError::NoInputPMFs`:无法根据给定的成本和 payload 计算输入 PMF
## 峰值内存使用(不含输入数据)
设 `N` 表示将 `n` 向上取整到最近的 2 的幂。
- `17N`:输入 PMF
- `N`:frozen mask
- `32L(N - 1)`:PMF 的最大总空间
- `L(N - 1)`:硬值的最大总空间
- `LN`:最佳路径
总计约为:
`N(18 + 34L) bytes`
- [1]: Q. Guan, K. Chen, W. Lu, W. Zhang, and N. Yu, “Non-Binary polar codes for steganography,” IEEE Transactions on Dependable and Secure Computing, vol. 23, no. 1, pp. 1029–1046, Sep. 2025, doi: 10.1109/tdsc.2025.3613759.
- [2]: T. Filler, J. Judas, and J. Fridrich, “Minimizing additive distortion in steganography using Syndrome-Trellis codes,” IEEE Transactions on Information Forensics and Security, vol. 6, no. 3, pp. 920–935, Apr. 2011, doi: 10.1109/tifs.2011.2134094.
标签:可视化界面, 通知系统