master
新增 `_expand_placeholders` 函数,用于将 `%date:FORMAT%` 格式的占位符替换为实际的日期字符串。 支持的格式包括:yyyy, yy, MM, dd, hhmmss, hh, mm, ss。 当输出路径包含此类占位符时,系统会自动将其展开并结合当前时间生成具体路径。 若路径为相对路径,则默认保存至 ComfyUI 的 output 目录下。 同时增强路径处理逻辑,能够根据路径是否以分隔符结尾或是否存在后缀,智能判断应作为目录还是文件处理, 并自动生成带序号的唯一文件名(如 encrypted_image_0.rsa)。
comfyui-encrypt (RSA Edition)
这个仓库提供一个工具,用于在 ComfyUI 中对输入图像使用 RSA 算法加密。主要目标是把 RSA 加密逻辑封装为库函数,并提供可以直接在 ComfyUI 中使用的自定义节点与 Script 节点示例。
要点:
- 使用 RSA-2048(或 RSA-4096)非对称加密,接收端只需公钥即可加密。
- 提供密钥生成、加密、解密等函数。
- 使用
cryptography库处理所有加密操作。
安装依赖
在仓库根目录下:
pip install -r requirements.txt
基本用法(库函数 / 独立脚本)
生成密钥对:
from rsa_encrypt import generate_rsa_keypair
private_pem, public_pem = generate_rsa_keypair(key_size=2048)
# private_pem, public_pem 都是 bytes 格式的 PEM 编码密钥
# 保存到文件中以供后续使用
with open("private_key.pem", "wb") as f:
f.write(private_pem)
with open("public_key.pem", "wb") as f:
f.write(public_pem)
加密图像:
from PIL import Image
from rsa_encrypt import encrypt_image
# 读取公钥
with open("public_key.pem", "rb") as f:
public_key_pem = f.read()
# 打开图像
img = Image.open("test_image.png")
# 加密
encrypted_bytes = encrypt_image(img, public_key_pem)
# 保存加密结果
with open("encrypted_image.rsa", "wb") as f:
f.write(encrypted_bytes)
解密图像:
from rsa_encrypt import decrypt_image
# 读取私钥
with open("private_key.pem", "rb") as f:
private_key_pem = f.read()
# 读取加密文件
with open("encrypted_image.rsa", "rb") as f:
encrypted_bytes = f.read()
# 解密
img = decrypt_image(encrypted_bytes, private_key_pem)
img.show()
ComfyUI 中的使用
方式 1:使用自定义节点(推荐)
将 rsa_encrypt.py、nodes.py 和 __init__.py 整个文件夹(如 comfyui-encrypt 文件夹)复制到 ComfyUI 的 custom_nodes 目录下:
ComfyUI/custom_nodes/comfyui-encrypt/
├── __init__.py
├── nodes.py
└── rsa_encrypt.py
重启 ComfyUI 后,你会在 "Encryption" 分类中看到两个新节点:
- RSAEncryptNode:输入 IMAGE 和 RSA 公钥(PEM 字符串),输出加密文件路径
- RSAKeyGeneratorNode:生成 RSA 密钥对(2048 或 4096 位),可选保存到磁盘
方式 2:Script 节点自定义调用
你也可以在 Script 节点中直接调用核心库:
from comfyui_encrypt.rsa_encrypt import encrypt_image
# 读取公钥(假设保存在某处)
with open("public_key.pem", "rb") as f:
public_key_pem = f.read()
# image 是 ComfyUI 传入的 IMAGE 对象(PIL Image/numpy array)
enc_bytes = encrypt_image(image, public_key_pem)
# 保存
with open("encrypted_image.rsa", "wb") as f:
f.write(enc_bytes)
测试
运行单元测试:
pytest -q
关键文件说明
rsa_encrypt.py— 核心库:密钥生成、加密/解密函数nodes.py— ComfyUI 自定义节点定义(两个节点类)__init__.py— 节点注册入口,供 ComfyUI 自动发现requirements.txt— Python 依赖清单tests/test_rsa_encrypt.py— pytest 单元测试
工作流例子
在 ComfyUI 中:
- 使用 RSAKeyGeneratorNode 生成密钥对(或提前生成好)
- 读取图像(LoadImage 节点或其它)
- 使用 RSAEncryptNode 输入 IMAGE 和公钥进行加密
- 输出加密文件路径,可链接到保存节点或后续处理
安全建议
- 保管好私钥!不要泄露私钥文件或其内容。
- 使用 RSA-4096(而不是 2048)以获得更强的安全性。
- 将密钥存放在安全的地方(如加密存储或受权限保护的目录)。
Languages
Python
100%