密文 assets_adminuser / assets_systemuser 表里的 password 或 private_key 字段
等待粘贴密文…
示例
解密结果 未运行
粘贴密文后点「解密」。密钥与密文都不会离开这台设备。
算法说明 与 JumpServer 源码 apps/common/utils/crypto.py 对齐
| 分支 | key 处理 | 密文编码 |
|---|---|---|
| signer 旧 JWT | 不需要 SECRET_KEY,也不校验签名 | urlsafe base64,取中段 |
| AES-ECB | 按码点截到 32,再用 \x00 补到 16 的倍数 |
标准 base64 |
| AES-GCM | 转字节后 ≥32 截前 32 字节,否则 PKCS#7 补到 32 |
标准 base64,前 72 字符是 header / nonce / tag |
| SM4-ECB | 同 GCM,但只有前 16 字节真正参与运算 | urlsafe base64,PKCS#7 填充 |
- 三个 crypto 分支按 AES-ECB → AES-GCM → SM4-ECB 顺序依次尝试,返回第一个解出非空结果的分支 —— 与 JumpServer 的
Crypto.decrypt一致。 - 密文里含两个「.」即判为 signer 格式(早期版本用签名而非加密,所以不需要密钥)。
- JumpServer 用硬件加密卡(Piico)时密文无法在浏览器里还原,需要对应设备。
- 解出的私钥若要落盘,记得
chmod 600。
典型用法 在有数据库与配置文件访问权限的前提下
- 取密钥:
grep SECRET_KEY /opt/jumpserver/config/config.yaml - 取密文(这两个字段是
EncryptCharField,库里存的就是密文):
SELECT username, password FROM assets_adminuser;
SELECT username, private_key FROM assets_systemuser; - 把密文填进上面「密文」框,密钥填进「SECRET_KEY」框,点解密。
适用范围:本页只做「用你自己实例的 SECRET_KEY 还原你自己库里的密文」这一件事, 用来做密码找回、迁移前核对、离职交接。密文与密钥都只在当前标签页的内存里参与运算, 不写任何存储、不发任何请求。