一、Rijndael加密算法介绍
- Rijndael加密算法是一种可逆的对称加密算法,这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥,一般用于服务端对服务端之间对数据进行加密/解密。该算法为比利时密码学家Joan Daemen和Vincent Rijmen所设计,结合两位作者的名字,以Rijndael命名。
1.1、Rijndael算法与AES算法区别
严格地说,Rijndael加密算法和AES算法并不完全一样(虽然在实际应用中两者可以互换),因为Rijndael加密算法可以支持更大范围的区块长度和密钥长度,下面为具体的说明:
- AES的区块长度固定为128比特,密钥长度则可以是128、192和256比特;
- Rijndael使用的密钥和区块长度均可以是128、160、192、224、256比特。
二、Rijndael加密/解密工具操作方式
- 首先,设置Rijndael加密参数,然后,上传或输入要加密的原始文本,最后,点击开始Rijndael加密即可。
- Rijndael加密/解密工具,主要用于在线Rijndael加密文本和Rijndael解密文本,支持设置多种Rijndael工作模式、Rijndael填充模式和Rijndael密钥长度。Rijndael加密和Rijndael解密参数需要完全一致才能成功,该在线工具加密解密文本使用Base64编码的字符串。
2.1、Rijndael的工作模式
- Rijndael加密算法常见的工作模式为:ECB,CBC,OFB,CFB,CFB8,CTR,GCM,除了ECB无须设置初始化向量IV而不安全之外,其它Rijndael工作模式都必须设置向量IV。
2.2、Rijndael填充模式
块密码只能对确定长度的数据块进行处理,而消息的长度通常是可变的,因此需要选择填充模式。当您选择NONE不填充时,则要保证加密文本长度为8的倍数,否则出现Rijndael解密/加密异常。
- 填充区别:在 ECB、CBC工作模式下最后一块要在加密前进行填充,其它不用选择填充模式;
- 填充模式:Rijndael支持的填充模式为PKCS7和NONE不填充。其中PKCS7标准是主流加密算法都遵循的数据填充算法,因此推荐PKCS7。
2.3、Rijndael加密密钥和密钥长度
- Rijndael密钥长度只有五个值,128Bit、160Bit、192Bit、224Bit、256Bit,对应的字节长度为16位、20位、24位、28位和32位。Rijndael加密密钥KEY用于加密解密数据,不能公开传输,例如16位的加密密钥KEY:1234567812345678。
2.4、Rijndael加密向量
- Rijndael加密向量可以公开,用于将加密随机化,同样的明文被多次加密也会产生不同的密文。
- 在实际的使用场景中,它不能像加密密钥那样直接保存在配置文件中,一般在加密端将向量IV设置为对应区块长度的随机值,然后和加密文本一起返给解密端。
2.5、Rijndael附加消息
Rijndael附加消息为GCM工作模式下的专用参数,由Rijndael加密解密双端共同使用,可以为空。
- 初始向量IV:参数向量IV的值相当于GCM工作模式使用的Nonce;
- 消息认证码:GCM加密后生成的消息认证码TAG,GCM工作模式下专用。