必须使用环境变量AES_KEY_256配置对称加密节点,明文字段填user_input.phone,算法AES-256-CBC并勾选Base64编码输出;解密节点需匹配相同密钥、算法及Base64解码输入,确保数据安全流转。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在扣子中启用对称加密保护用户输入数据
当用户在扣子(Coze)Bot中提交手机号、身份证号或地址等隐私信息时,若不加处理直接流转至下游服务,可能在日志、调试输出或中间节点缓存中暴露明文。必须在数据离开Bot执行环境前完成加密,且密钥不可硬编码在流程图中。
打开扣子工作台 → 进入目标Bot编辑页 → 点击「工作流」标签页 → 在画布空白处右键 → 选择「添加节点」→ 搜索并拖入「对称加密」节点。
双击该节点,在「密钥来源」下拉菜单中【必须选择“环境变量”】,不可选“固定值”。点击右侧「+ 添加环境变量」,新建一个名为AES_KEY_256的变量,值为32字节随机字符串(如Ux7v9qKm2RtFyBnGzWcLpHjD4sV8aXeN),保存后该变量将被自动隐藏且不显示在调试面板中。
在「明文字段」输入框中填写上游节点输出的字段名,例如user_input.phone;「算法」保持默认AES-256-CBC;勾选「Base64编码输出」——这一步不可跳过,否则后续HTTP请求体可能因二进制内容损坏而失败。
配置解密节点还原服务端可用数据
下游API接收的是Base64编码的AES密文,需在扣子工作流末端插入解密节点,确保交付给业务系统的仍是原始明文格式。
方法一:使用内置「对称解密」节点
在加密节点下游拖入「对称解密」节点 → 双击打开设置 → 「密钥来源」同样选「环境变量」→ 输入与加密节点完全一致的变量名AES_KEY_256 → 「密文字段」填入加密节点的输出字段名,例如encrypt_output.ciphertext → 「算法」严格匹配为AES-256-CBC → 勾选「Base64解码输入」。
方法二:用「代码」节点手动解密(仅限高级场景)
当需要兼容旧版服务或自定义填充向量时,拖入「代码」节点 → 语言选Python → 粘贴以下代码:
import base64, json<br>from Crypto.Cipher import AES<br>from Crypto.Util.Padding import unpad<br><br>key = context.get_env("AES_KEY_256").encode()<br>ciphertext_b64 = context.get("encrypt_output.ciphertext")<br>ciphertext = base64.b64decode(ciphertext_b64)<br>iv = ciphertext[:16]<br>cipher = AES.new(key, AES.MODE_CBC, iv)<br>plaintext = unpad(cipher.decrypt(ciphertext[16:]), AES.block_size)<br>context.set("decrypted_data", plaintext.decode())
注意:【必须提前在Bot插件中安装pycryptodome依赖】,否则运行时报错ModuleNotFoundError。进入「插件」→「Python依赖」→ 点击「+ 添加」→ 输入pycryptodome==3.19.0 → 保存。
验证加密链路是否生效
第一步:在工作流起始处添加「调试」节点,输入{"phone": "13800138000"}模拟用户输入。
第二步:运行调试 → 观察加密节点输出字段ciphertext值是否为一长串Base64字符(长度约44字符起),且每次相同输入生成的密文不同(因IV随机)。
第三步:检查解密节点输出字段decrypted_data或对应字段值是否精确还原为"13800138000",无空格、换行或乱码。
第四步:在「网络」面板中查看HTTP请求载荷,确认发送至下游API的body内该字段已变为密文,而非原始手机号。


















