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.
标签:可视化界面, 通知系统