用途:为一批被引用的文件生成一个强密码并逐一加密保护,按文件类型采用相应方式,原文件不被改动。
主要能力:PDF 使用原生 AES-256 加密(优先 qpdf,回退 pypdf),生成 <name>-protected.pdf,打开时提示输入密码;.docx/.xlsx/.pptx、.doc/.xls/.ppt、图片及其他任意类型使用 AES-256 7-Zip 归档(-mhe=on,文件名也加密),生成 <name>.7z,需用密码解压(7-Zip / Keka / WinRAR)。若某文件没有可用的 AES-256 工具,则报告为失败,不会降级为弱加密。
使用方式:
python3 tools/protect_with_password.py FILE [FILE ...]
[--password PW] [--length 24] [--out-dir DIR]
[--password-file PATH | --no-password-file]
把所有被引用的文件作为位置参数传入。默认自动生成强密码,--password 可指定复用密码;受保护副本默认与输入文件同目录,或用 --out-dir 指定目录。工具在 stdout 输出 JSON 摘要,在 stderr 输出密码横幅,并(除非 --no-password-file)将密码写入权限为 chmod-600 的 PROTECT-PASSWORD.txt。
运行后:把密码告知用户,并提醒通过带外渠道分享,不要与受保护文件走同一渠道或邮件;交付后删除 PROTECT-PASSWORD.txt。仅当所有文件都成功保护时退出码为 0,任一失败为 1(查看 results[].reason)。
限制:Office 文件的原生 MS-OFFCRYPTO agile 加密需要 LibreOffice 或专用加密器,此处未内置,因此改用 AES-256 归档包裹。相关工具 tools/protect_deliverable.py 提供项目级变体(一个受保护 PDF 加一个 AES-256 交付 zip),本技能用于保护任意一组单个文件。