基于Serpent算法的文本加密解密工具,支持多种密钥长度与操作模式。
工具用的顺手吗?
你的反馈能帮助我们做得更好
请输入内容并点击加密/解密按钮
概览
了解工具能解决的问题、计算或处理逻辑,以及数据边界。
一段文本要进入 Serpent 处理流程,先会按 UTF-8 转成字节,再按固定长度的分组处理。Serpent 原始规范使用 128 位(16 字节)分组和 32 轮变换;当前页面可选择 128、192 或 256 位密钥,分别要求解码后恰好为 16、24 或 32 字节。这里的位数描述密钥长度,不会把 128 位密钥变成 128 位分组以外的另一种分组大小。
| 项目 | 当前页面可选值 | 输入或输出含义 |
|---|---|---|
| 密钥长度 | 128 / 192 / 256 位 | 对应 16 / 24 / 32 字节 |
| 密钥格式 | 文本、Hex、Base64 | 格式决定输入字符串怎样还原为密钥字节 |
| 工作模式 | ECB、CBC | CBC 还需要 16 字节 IV;ECB 不需要 IV |
| 填充 | PKCS7、Zero Padding | 把文本字节补到 16 字节的整数倍 |
| 加密输入 | 文本 | 按 UTF-8 字节处理 |
| 密文表示 | Base64、Hex | 加密同时展示两种表示;解密时任选与密文匹配的一种 |
文本密钥按字节校验,不是按可见字符个数校验。ASCII 字符通常各占一个字节,而中文、表情等字符可能占多个字节;若需要精确控制长度,使用自动生成的 Hex 密钥更容易核对。Hex 的两个字符表示一个字节,因此 128、192、256 位密钥分别需要 32、48、64 个十六进制字符。
ECB 会分别处理每个 16 字节分组;在同一密钥下,相同明文分组会得到相同密文分组,因此重复结构可能保留在密文模式中。CBC 会先把当前明文分组与前一个密文分组组合,首个分组则与 IV 组合。当前页面的 CBC IV 必须解码为 16 字节,可选择 Hex 或 Base64 输入。
加密页默认可自动生成 IV。自动生成开启时,每次执行都会使用并显示一个新的 Hex IV;密文输出只包含密文字节,不会把 IV 自动拼进 Base64 或 Hex 密文。要在解密页还原内容,必须另外保存并填回该 IV。IV 不需要像密钥一样保密,但不能省略,也不应固定复用;密钥、模式、填充、IV 和密文格式中任一项不同,解密结果都会改变。
PKCS7 用若干个数值相同的字节记录补了多长。例如 16 字节分组还缺 5 字节时,末尾补五个数值为 5 的字节;原文恰好对齐时仍补完整的 16 字节分组。这样解密端可以明确删除填充。当前 Zero Padding 会用零字节补齐,而且即使原文已经对齐也会再补一个零字节分组;解密时会删除末尾连续的零字节,因此它无法区分“填充的零”和原文真实结尾的零字节。
Base64 与 Hex 只是同一串密文字节的两种可复制表示,不会改变算法强度。16 字节密文通常显示为 32 个 Hex 字符或 24 个含填充符的 Base64 字符。解密前选择的是密文当前的表示格式:把 Hex 字符串按 Base64 读取,或反过来读取,都会得到另一串字节。
指南
按步骤完成操作,并通过示例核对输入与结果。
选择 128 位密钥、CBC 模式和 PKCS7 填充。密钥格式选“文本”,输入 0123456789abcdef;这 16 个 ASCII 字符正好是 16 字节。
关闭 IV 自动生成,IV 格式选 Hex,输入 000102030405060708090a0b0c0d0e0f。这是 32 个 Hex 字符,对应 16 字节;这里只用于可复现演示,不应作为真实数据的固定 IV。
在加密输入框填写 Serpent demo。执行后,当前页面给出的 Hex 密文为 99701bd5dc969b2000e64b9f48de1990,对应 Base64 为 mXAb1dyWmyAA5kufSN4ZkA==。
切到解密,选择 Base64 输入并粘贴上述 Base64 密文;保留同一密钥、CBC、PKCS7 和 IV。执行后文本结果应为 Serpent demo,同时还会展示明文字节的 Base64 与 Hex 表示。
这组结果用于核对当前页面内部的往返流程,不代表已经与其他 Serpent 软件或密码库互通。跨系统对接必须由双方共同约定字节序、密钥解释、模式、填充、IV 携带方式和密文编码,再以公开测试向量及双方样本逐项比对。
| 现象 | 先检查 |
|---|---|
| 提示密钥长度不符 | 按选定密钥位数核对解码后的字节数;文本密钥避免首尾空格,Hex 应为偶数长度且只含十六进制字符 |
| CBC 无法还原原文 | 确认 IV 与加密时完全一致,并自行核对其解码后是否正好 16 字节 |
| 输出乱码或为空 | 核对密文究竟是 Base64 还是 Hex,并确认密钥格式没有选错 |
| 只能还原前半段 | 检查密文是否复制完整;ECB/CBC 密文字节长度应为 16 的整数倍 |
| 末尾的零字节消失 | Zero Padding 会移除结尾连续零字节;需要保留二进制尾零时不要依赖这种填充 |
| 参数都相同仍与别的软件不同 | 不要只比较算法名称;继续核对字节序、文本编码、密钥派生、填充细节与 IV 是否被拼接进密文 |
场景
查看这项工具在不同工作与生活流程中的用法。
学习者可以固定明文和密钥,只改变 ECB/CBC 或填充,观察密文长度、IV 要求与输出变化。结果用于理解参数关系,而不是证明某种配置已经达到生产安全要求。
测试人员可保存一组脱敏文本、密钥格式、模式、填充、IV、Base64 和 Hex 结果,随后检查同一页面能否稳定回解。记录时应把参数与密文放在一起,避免只留下无法解释的字符串。
开发协作中可借此列清“原文编码—密钥字节—模式—填充—IV—密文编码”链路,再由目标系统的经过验证实现完成互操作测试。若双方只交换“Serpent-256”这样的名称,信息仍不足以复现结果。
问答
集中解答高频疑问与容易混淆的问题。
不建议。页面把“文本”密钥直接按 UTF-8 转成原始密钥字节,不会自动加入盐,也不会执行口令派生。普通短密码既可能达不到所选字节数,也不等同于随机生成的加密密钥;正式系统应采用经过审查的口令派生与密钥管理方案。
不需要把 IV 当作秘密,但解密方必须拿到加密时的同一个 IV。NIST 对 CBC 的要求是加密时 IV 应不可预测;它通常可与密文一同保存或传输。当前页面不会把 IV自动封装进密文,所以复制结果时要另行记录。
若使用 CBC 且开启自动生成 IV,这是预期现象:每次生成的新 IV 会改变首个分组,后续链式结果也随之改变。若希望复现实验结果,可暂时固定同一个测试 IV;真实加密不应为了得到相同密文而重复固定 IV。
不能。ECB/CBC 加上当前填充只产生密文,没有认证标签;错误参数或被篡改的密文有时仍可能形成可显示结果。需要确认来源和完整性时,应采用经过验证的认证加密方案,或在专业设计中增加独立且正确的消息认证。
须知
使用前了解适用范围、结果限制与必要提醒。
当前版本未通过本次内容审核中的标准测试向量互操作核验。页面内使用完全相同参数的加密—解密往返可以复现,但不应据此认定输出与其他 Serpent 实现兼容,也不应直接用于生产系统、跨系统数据交换、长期密文保存或重要秘密保护。
推荐
查找相关工具、专题与可用的 API 能力。