一、Twofish加密/解密在线工具文档
1.1、Twofish加密/解密算法介绍
Twofish(双鱼)是布鲁斯·施奈尔带领的项目组于1998年研发的分组密码算法。美国国家标准技术研究所(NIST)公开招募的高级加密标准(AES)决赛算法之一,但最终并未当选高级加密标准。Twofish的标志性特点是它采用了和密钥相关的替换盒(S盒)。密钥输入位的一半被用于“真正的”加密流程进行编排并作为Feistel的轮密钥使用,而另一半用于修改算法所使用的S盒,Twofish的密钥编排非常复杂。
1.2、Twofish加密/解密算法特点
Twofish加密/解密算法是一种可逆的对称加密算法,这类算法在加密和解密时使用相同的密钥,或是使用两个可以简单地相互推算的密钥,一般用于服务端对服务端之间对数据进行加密/解密。作为可逆且对称的块加密,Twofish加密算法的速度比公钥加密等加密算法快很多,但是要求加密端和解密端双方都使用相同的密钥是Twofish算法的主要缺点之一。
二、Twofish加密/解密在线工具使用须知
2.1、Twofish的工作模式
Twofish常见的工作模式为:ECB,CBC,OFB,CFB,CFB8,CTR,GCM,除了ECB无须设置初始化向量IV而不安全之外,其它Twofish工作模式都必须设置向量IV,其中GCM工作模式较为特殊。
Twofish-GCM工作模式注意事项:
- 初始向量:参数向量IV的值相当于GCM使用的Nonce;
- 附加消息:GCM专用,由加解密双端共享,AAD可以为空;
- 消息认证码:GCM加密后生成的消息认证码TAG,GCM解密时专用。
2.2、Twofish的填充模式
块密码只能对确定长度的数据块进行处理,而消息的长度通常是可变的,因此需要选择填充模式。
- 填充区别:在ECB、CBC工作模式下最后一块要在加密前进行填充,其它不用选择填充模式;
- 填充模式:Twofish支持的填充模式为PKCS7和NONE不填充。其中PKCS7标准是主流加密算法都遵循的数据填充算法。Twofish标准规定的区块长度为固定值128Bit,对应的字节长度为16位,这明显和PKCS5标准规定使用得固定值8位不符,虽然有些框架特殊处理后可以通用PKCS5,但是从长远和兼容性考虑,推荐PKCS7。
2.3、Twofish密钥KEY和初始化向量IV
初始化向量IV可以有效提升安全性,但是在实际的使用场景中,它不能像密钥KEY那样直接保存在配置文件或固定写死在代码中,一般正确的处理方式为:在加密端将IV设置为一个16位的随机值,然后和加密文本一起返给解密端即可。
- 密钥KEY:Twofish标准规定区块长度只有一个固定值为128Bit,对应字节为16位。Twofish规定密钥长度有三个值,128Bit、192Bit、256Bit,对应字节为16位、24位和32位,密钥KEY不能公开传输,用于加密和解密;
- 初始化向量IV:该字段可以公开,用于将加密随机化。同样的明文被多次加密也会产生不同的密文,避免了较慢的重新产生密钥的过程,初始化向量与密钥相比有不同的安全性需求,因此IV通常无须保密。然而在大多数情况中,不应当在使用同一密钥的情况下两次使用同一个IV,一般推荐初始化向量IV为16位的随机值。
三、Twofish加密/解密在线工具使用方式
加解密参数需要完全一致才能成功,为防止乱码和保证正确的传输结果,加解密文本一律使用Base64编码的字符串。
- 场景一:使用Twofish密钥加密文本,您可以手动或使用默认值进行Twofish加密操作;
- 场景二:使用Twofish密钥解密文本,主要用于在线解密Twofish字符串。