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

Class StegaPy

StegaPy/StegaPy.py:30–236  ·  view source on GitHub ↗

StegaPy 核心调度与管理类,提供信息隐藏与水印功能的统一对外接口。

Source from the content-addressed store, hash-verified

28
29
30class StegaPy:
31 """StegaPy 核心调度与管理类,提供信息隐藏与水印功能的统一对外接口。"""
32
33 NAMESPACE = "StegaPy"
34
35 def __init__(self, plugin: StegaPyPlugin, config: StegaPyConfig):
36 """初始化 StegaPy 实例,绑定核心插件与系统配置。"""
37 if plugin is None:
38 raise StegaPyException(
39 "未指定插件",
40 StegaPyErrors.NO_PLUGIN_SPECIFIED,
41 self.NAMESPACE
42 )
43 if config is None:
44 raise StegaPyException(
45 "未指定配置",
46 StegaPyErrors.UNHANDLED_EXCEPTION,
47 self.NAMESPACE
48 )
49
50 self.plugin = plugin
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)

Callers 8

_make_stegapyFunction · 0.90
cmd_embedFunction · 0.85
cmd_extractFunction · 0.85
cmd_wm_embedFunction · 0.85
cmd_wm_verifyFunction · 0.85
cmd_wm_generate_sigFunction · 0.85
data_hiding_uiFunction · 0.85
watermarking_uiFunction · 0.85

Calls

no outgoing calls

Tested by 1

_make_stegapyFunction · 0.72