diff --git a/gateway/platforms/weixin.py b/gateway/platforms/weixin.py index 980be11709ec..3d7e0098b881 100644 --- a/gateway/platforms/weixin.py +++ b/gateway/platforms/weixin.py @@ -1416,7 +1416,7 @@ async def _process_message(self, message: Dict[str, Any]) -> None: item_list = message.get("item_list") or [] text = _extract_text(item_list) if text: - content_key = f"content:{sender_id}:{hashlib.md5(text.encode()).hexdigest()}" + content_key = f"content:{sender_id}:{hashlib.md5(text.encode(), usedforsecurity=False).hexdigest()}" if self._dedup.is_duplicate(content_key): logger.debug("[%s] Content-dedup: skipping duplicate message from %s", self.name, sender_id) return @@ -2115,7 +2115,7 @@ async def _send_file( filekey = secrets.token_hex(16) aes_key = secrets.token_bytes(16) rawsize = len(plaintext) - rawfilemd5 = hashlib.md5(plaintext).hexdigest() + rawfilemd5 = hashlib.md5(plaintext, usedforsecurity=False).hexdigest() upload_response = await _get_upload_url( self._send_session, base_url=self._base_url, diff --git a/hermes_cli/web_server.py b/hermes_cli/web_server.py index 1fe07fefc059..674bbf4c8167 100644 --- a/hermes_cli/web_server.py +++ b/hermes_cli/web_server.py @@ -11490,7 +11490,7 @@ def _mcp_install_action_name(name: str) -> str: re-click or a second catalog install doesn't overwrite the first's tracked process/log while its git clone is still running.""" slug = re.sub(r"[^a-z0-9]+", "-", name.lower()).strip("-")[:48] or "server" - digest = hashlib.sha1(name.encode()).hexdigest()[:8] + digest = hashlib.sha1(name.encode(), usedforsecurity=False).hexdigest()[:8] action = f"mcp-install-{slug}-{digest}" _ACTION_LOG_FILES.setdefault(action, f"action-{action}.log") return action @@ -12430,7 +12430,7 @@ def _hub_action_name(verb: str, key: str) -> str: (readable) + hash (collision-proof) keys each action to its own row. """ slug = re.sub(r"[^a-z0-9]+", "-", key.lower()).strip("-")[:48] or "skill" - digest = hashlib.sha1(key.encode()).hexdigest()[:8] + digest = hashlib.sha1(key.encode(), usedforsecurity=False).hexdigest()[:8] name = f"skills-{verb}-{slug}-{digest}" _ACTION_LOG_FILES.setdefault(name, f"action-{name}.log") return name diff --git a/tools/skills_sync.py b/tools/skills_sync.py index 2c0f41c47a62..381e1ade1d03 100644 --- a/tools/skills_sync.py +++ b/tools/skills_sync.py @@ -231,7 +231,7 @@ def _compute_relative_dest(skill_dir: Path, bundled_dir: Path) -> Path: def _dir_hash(directory: Path) -> str: """Compute a hash of all file contents in a directory for change detection.""" - hasher = hashlib.md5() + hasher = hashlib.md5(usedforsecurity=False) try: for fpath in sorted(directory.rglob("*")): if fpath.is_file():