Rijndael在线加密/解密
AES原始算法,支持128/192/256位可变分组大小和密钥长度,提供更灵活的加密选项
Rijndael 与 AES
AES 是 Rijndael 的子集 (固定 128 位分组)。本工具支持完整 Rijndael 规范 (含 128/192/256 位分组)。
关于 Rijndael 加密
Rijndael 是由比利时密码学家 Joan Daemen 和 Vincent Rijmen 设计的对称密钥分组密码。它在高级加密标准(AES)竞赛中胜出,被 NIST 选为全球加密标准。虽然 AES 标准严格规定分组大小固定为 128 位,但原始的 Rijndael 算法支持 128、192 和 256 位的可变分组大小,为特定应用提供了更大的灵活性和潜在的更高安全性。
本工具提供了 Rijndael 算法的完整实现,允许您尝试超出标准 AES 规范的配置。通过支持 256 位分组大小配合 256 位密钥,Rijndael 在对抗某些类型的密码分析时,理论上比标准 AES 的 128 位分组提供了更高的安全余量。所有加解密操作均完全在您的浏览器中使用 JavaScript 执行,确保您的敏感数据永远不会离开您的设备。
Rijndael 与 AES 对比
| 特性 | Rijndael | AES |
|---|---|---|
| 分组大小 | 128/192/256 bits | 128 bits |
| 密钥长度 | 128/192/256 bits | 128/192/256 bits |
| 标准 | AES 原型 | NIST FIPS 197 |
| 灵活性 | 高 | 中等 |
主要特性
- 灵活的分组大小:支持 128 位(AES 标准)、192 位和 256 位分组。
- 可变密钥长度:全面支持 128 位、192 位和 256 位加密密钥。
- 全面的模式支持:包含 CBC、ECB、CFB、OFB、CTR 和 RAW 模式,满足多样化需求。
- 客户端安全:100% 本地处理;数据绝不传输至服务器。
加密模式
- CBC: 每个明文块与前一个密文块进行 XOR 运算。需要 IV,提供强安全性。
- ECB: 每个块独立加密。不需要 IV,但相同明文产生相同密文。
- CFB: 密文反馈模式,将分组密码转换为流密码。需要 IV。
- OFB: 输出反馈模式,类似 CFB 但独立生成密钥流。需要 IV。
- CTR: 计数器模式,将分组密码转换为流密码。需要 IV。
- RAW: 单块直接加密,主要用于教学和测试。
加密模式对比
| 模式 | 安全性 | 需要IV | 并行处理 | 推荐场景 |
|---|---|---|---|---|
| CBC | 高 | 是 | 仅解密 | 应用最广泛,适合一般加密需求 |
| ECB | 低 | 否 | 完全支持 | 不推荐 - 存在安全隐患 |
| CTR | 高 | 是 | 完全支持 | 适合高性能场景,支持流式处理 |
| CFB | 高 | 是 | 仅解密 | 适合流式加密场景 |
| OFB | 高 | 是 | 不支持 | 适合需要容错的场景 |
| RAW | N/A | 否 | 单块处理 | 仅用于教学和测试 |
分组大小与密钥配置(Rijndael 特色)
Rijndael 的独特优势在于支持可变的分组大小。下表展示了所有支持的配置组合:
| 分组大小 | 密钥长度 | 轮数 | AES兼容 | 安全性 | 使用建议 |
|---|---|---|---|---|---|
| 128-bit (16 bytes) | 128/192/256-bit | 10/12/14 | 完全兼容 | 高 | 标准AES配置,推荐用于兼容性 |
| 192-bit (24 bytes) | 128/192/256-bit | 12/12/14 | 非标准 | 很高 | Rijndael特有,更高抗碰撞能力 |
| 256-bit (32 bytes) | 128/192/256-bit | 14/14/14 | 非标准 | 极高 | Rijndael特有,最大安全余量 |
分组大小说明:
更大的分组大小可以提供更强的抗生日攻击(碰撞)能力。256位分组配合256位密钥理论上提供了比标准AES-256更高的安全余量。但请注意,非128位的分组大小不符合AES标准,可能无法与标准AES库互操作。
填充方式说明
| 填充方式 | 描述 | 适用场景 |
|---|---|---|
| PKCS7 | 填充N个字节,每个字节值为N(最常用的标准填充) | 推荐用于大多数场景 |
| ZeroPadding | 用0x00填充到分组边界 | 二进制数据可能导致歧义 |
| NoPadding | 不填充,输入必须是分组大小的整数倍 | CTR、CFB、OFB模式 |
| ISO10126 | 随机字节填充,最后一个字节为填充长度 | 特定安全需求 |
| ANSI X.923 | 0x00填充,最后一个字节为填充长度 | 某些遗留系统 |
参考资料
常见问题 (FAQ)
Rijndael 和 AES 有什么区别?
AES 是 Rijndael 的一个子集。AES 标准 (FIPS 197) 严格定义分组大小为 128 位,同时允许 128、192 或 256 位的密钥。而作为原始算法的 Rijndael 设计为支持 128、192 和 256 位的分组大小,且独立于密钥长度。本工具允许您使用这些非标准的分组大小。
Rijndael 加密安全吗?
是的,极度安全。Rijndael 经过全球顶尖密码学家 5 年的严格分析后被选为高级加密标准 (AES)。经批准(在使用标准 AES 参数时),它可用于保护美国政府的绝密信息,是目前全球数据加密的事实标准。
我应该何时使用 256 位分组大小?
如果您需要对接要求此参数的特定系统,或者您希望获得比 128 位分组更高的抗生日攻击(碰撞攻击)的安全余量,可以使用 256 位分组。不过,为了获得与标准软件和库的最大兼容性,推荐使用 128 位分组(即 AES 模式)。
什么是 RAW 模式?
RAW 模式处理单个数据块,不使用任何填充或链接模式。它主要用于教学目的、调试核心算法或验证测试向量。不建议用于加密一般的数据文件或消息,因为它无法安全处理长度超过一个分组的数据。
我的数据会发送到服务器吗?
不会。本工具采用隐私优先架构构建。所有的密码学操作(加密和解密)均使用 JavaScript 在您的 Web 浏览器中本地执行。您的密钥、IV 和明文绝不会通过互联网传输或存储在我们的服务器上。
什么是 IV(初始化向量)?
IV(Initialization Vector)是加密过程中使用的一个随机值,用于确保相同的明文在每次加密时产生不同的密文。IV 的长度必须等于分组大小。对于 Rijndael,128 位分组需要 16 字节 IV,192 位需要 24 字节,256 位需要 32 字节。IV 不需要保密,但应该是不可预测的(随机生成)。
为什么解密失败?
解密失败可能有几个原因:1) 密钥不正确 - 必须使用与加密时相同的密钥;2) IV 不正确 - 必须使用与加密时相同的 IV;3) 密文格式错误 - 确保输入格式与密文实际格式匹配;4) 加密配置不匹配 - 分组大小、密钥长度、模式和填充方式必须与加密时完全相同。
应该选择哪种加密模式?
对于大多数应用,推荐使用 CBC 模式,它提供了良好的安全性和广泛的兼容性。如果需要高性能和并行处理,可以选择 CTR 模式。绝不要使用 ECB 模式,因为它会暴露数据模式,存在严重的安全隐患。CFB 和 OFB 适用于流式加密场景。RAW 模式仅用于教学和测试。
如何生成安全的密钥?
使用本工具提供的"生成密钥"按钮可以生成密码学安全的随机密钥。如果您需要从密码生成密钥,应使用密钥派生函数(KDF)如 PBKDF2、bcrypt 或 scrypt,而不是直接使用密码作为密钥。重要:始终安全存储您的加密密钥,不要在不安全的渠道传输它们。
Rijndael 可以与其他 AES 工具互操作吗?
只有在使用 128 位分组大小时,Rijndael 才与标准 AES 完全兼容。如果您使用 192 位或 256 位的分组大小,则这是 Rijndael 特有的功能,大多数标准 AES 库和工具无法处理。如果您需要与其他系统互操作,请始终使用 128 位分组大小。