pub struct DualPayloadEmbedder;Expand description
Dual-payload deniable steganography adapter.
Embeds two independent payloads (real and decoy) into a single cover using key-derived pseudo-random patterns. Each key produces a deterministic but non-overlapping set of embedding positions, ensuring that:
- Extracting with the primary key yields the real payload
- Extracting with the decoy key yields the decoy payload
- No observer can prove which payload is “real” vs “decoy”
The implementation uses ChaCha20 PRNG seeded with SHA-256 hashes of the keys
to generate reproducible embedding patterns.
Implementations§
Trait Implementations§
Source§impl Default for DualPayloadEmbedder
impl Default for DualPayloadEmbedder
Source§impl DeniableEmbedder for DualPayloadEmbedder
impl DeniableEmbedder for DualPayloadEmbedder
Source§fn embed_dual(
&self,
cover: CoverMedia,
pair: &DeniablePayloadPair,
keys: &DeniableKeySet,
_embedder: &dyn EmbedTechnique,
) -> Result<CoverMedia, DeniableError>
fn embed_dual( &self, cover: CoverMedia, pair: &DeniablePayloadPair, keys: &DeniableKeySet, _embedder: &dyn EmbedTechnique, ) -> Result<CoverMedia, DeniableError>
Embed both the real and decoy payload in
cover. Read moreSource§fn extract_with_key(
&self,
stego: &CoverMedia,
key: &[u8],
_extractor: &dyn ExtractTechnique,
) -> Result<Payload, DeniableError>
fn extract_with_key( &self, stego: &CoverMedia, key: &[u8], _extractor: &dyn ExtractTechnique, ) -> Result<Payload, DeniableError>
Auto Trait Implementations§
impl Freeze for DualPayloadEmbedder
impl RefUnwindSafe for DualPayloadEmbedder
impl Send for DualPayloadEmbedder
impl Sync for DualPayloadEmbedder
impl Unpin for DualPayloadEmbedder
impl UnsafeUnpin for DualPayloadEmbedder
impl UnwindSafe for DualPayloadEmbedder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more