Sublime Text 不能直接执行AES加密,因其无运行时环境,真实加密须在数据库层、应用层或加密网关完成;它仅能通过插件辅助模板输入与安全调用外部加密工具。

Sublime Text 本身不支持病历字段级加密或模板智能插入,硬套用会导致数据裸奔、合规失效——必须配合后端加密逻辑与插件协同工作。
为什么不能直接在 Sublime 里做 AES 加密存储
Sublime 是纯文本编辑器,没有运行时环境,AES_ENCRYPT 这类数据库函数、crypto/aes 这类 Go/Java 库根本无法执行。你在 Sublime 里写再多加密代码,也只是字符串,不会自动触发加解密流程。
- 常见错误现象:把
UPDATE medical_records SET diagnosis=AES_ENCRYPT(...)直接粘贴进 Sublime 保存为 SQL 文件,误以为“已加密”,结果数据库表仍是明文 - 真实加密发生位置只在:数据库层(如 MySQL 的
AES_ENCRYPT函数)、应用层(Spring Boot 中Cipher实例)、或专用加密网关 - Sublime 唯一能做的,是辅助你安全地编写和管理加密相关的配置或 SQL 脚本,比如密钥占位符替换、SQL 模板校验
用 Sublime + 插件实现“快速模板输入”的实操要点
电子病历高频字段(如“主诉”“现病史”“诊断依据”)需要结构化补全,靠手敲易错且慢。Sublime 的 snippets 和 Emmet 可提速,但需适配医疗语义:
- 定义 snippet 时,避免硬编码敏感字段值,例如不要写
<patient_name>张三</patient_name>,改用占位符<patient_name>${1:姓名}</patient_name> - 模板缩写建议带科室前缀,如
hx-zy展开为“呼吸科住院记录头”,xx-sz展开为“心内科手术记录模板”,防止跨科室误用 - 禁用默认的 HTML Emmet 缩写(如
div→<div></div>),医疗模板中更常用的是结构化标签如chief-complaint、diagnosis-icd10,需手动注册自定义缩写 - 推荐插件:
TrailingSpaces(自动删行尾空格,避免 XML/JSON 格式损坏)、BracketHighlighter(高亮嵌套的<section></section>标签,防模板结构错位)
如何让 Sublime 安全参与加密流程
它不加密,但可以成为加密操作的“安全入口”:通过预设命令调用外部工具,把明文病历片段交给可信加密模块处理。
- 在 Sublime 的
Tools → Build System → New Build System中配置一个 build:
{
"cmd": ["python3", "/path/to/encrypt_cli.py", "$file"],
"selector": "source.sql, source.xml",
"working_dir": "$file_path"
}
其中 encrypt_cli.py 是你自己写的轻量脚本,调用系统 KMS 或本地 AES 密钥完成加密,并把结果回填到当前文件。关键点:
- 密钥绝不能写死在脚本里,必须从环境变量读取:
os.getenv("MEDICAL_ENCRYPTION_KEY") - 加密后立即清空内存中的明文缓冲区(Python 中用
del plaintext+gc.collect()) - 该 build 仅限本地开发机使用,严禁提交到 Git —— 对应的
.sublime-build文件应加入.gitignore
真正容易被忽略的,是模板输入和加密动作之间的职责割裂:医生在前端填完“主诉”后,加密发生在后端入库瞬间;而 Sublime 里的模板只是前端输入辅助。混淆这两层,就会在测试环境误用生产密钥,或把未加密模板当成品上线。

















