MCPcopy Create free account
hub / github.com/MearaY/StegaPy / embed_data

Method embed_data

StegaPy/StegaPy.py:53–87  ·  view source on GitHub ↗

将机密信息(Payload)嵌入至载体图像中,并返回隐写后的图像字节流。

(self, msg: bytes, msg_filename: Optional[str],
                   cover: Optional[bytes], cover_filename: Optional[str],
                   stego_filename: Optional[str])

Source from the content-addressed store, hash-verified

51 self.config = config
52
53 def embed_data(self, msg: bytes, msg_filename: Optional[str],
54 cover: Optional[bytes], cover_filename: Optional[str],
55 stego_filename: Optional[str]) -> bytes:
56 """将机密信息(Payload)嵌入至载体图像中,并返回隐写后的图像字节流。"""
57 if Purpose.DATA_HIDING not in self.plugin.get_purposes():
58 raise StegaPyException(
59 "插件不支持数据隐藏",
60 StegaPyErrors.PLUGIN_DOES_NOT_SUPPORT_DH,
61 self.NAMESPACE
62 )
63
64 try:
65 # 压缩数据(如果启用)
66 if self.config.is_use_compression():
67 msg = self._compress_data(msg)
68
69 # 加密数据(如果启用)
70 if self.config.is_use_encryption():
71 if not self.config.get_password():
72 raise StegaPyException(
73 "加密需要密码",
74 StegaPyErrors.INVALID_PASSWORD,
75 self.NAMESPACE
76 )
77 crypto = CryptoUtil(self.config.get_password(),
78 self.config.get_encryption_algorithm())
79 msg = crypto.encrypt(msg)
80
81 # 使用插件嵌入数据
82 return self.plugin.embed_data(msg, msg_filename, cover,
83 cover_filename, stego_filename)
84 except StegaPyException:
85 raise
86 except Exception as e:
87 raise StegaPyException(str(e), StegaPyErrors.UNHANDLED_EXCEPTION, self.NAMESPACE)
88
89 def extract_data(self, stego_data: bytes,
90 stego_filename: Optional[str]) -> List:

Callers 11

cmd_embedFunction · 0.95
data_hiding_uiFunction · 0.95
watermarking_uiFunction · 0.95
test_roundtrip_basicMethod · 0.45
test_roundtripMethod · 0.45
embed_markMethod · 0.45

Calls 9

_compress_dataMethod · 0.95
encryptMethod · 0.95
StegaPyExceptionClass · 0.85
CryptoUtilClass · 0.85
is_use_compressionMethod · 0.80
is_use_encryptionMethod · 0.80
get_passwordMethod · 0.80
get_purposesMethod · 0.45