Blowfish 加密算法是一种对称密钥加密算法,由 Bruce Schneier 于 1993 年设计。Blowfish 算法的特点是速度快、安全性高,并且可以使用不同长度的密钥进行加密。
Blowfish 算法的加密过程是通过将明文分成 64 位的块,然后对每个块进行加密。在加密过程中,使用密钥将明文进行加密,然后得到密文。解密时,使用同样的密钥将密文进行解密,得到原始明文。
Blowfish 算法的密钥长度可以是 32 到 448 位不等,因此可以根据安全需求使用不同长度的密钥。Blowfish 算法的安全性主要依赖于密钥长度和加密轮数,因此需要选择足够长的密钥和足够多的加密轮数才能保证安全性。
填充模式
- None:不填充
- PKCS7:填充字符串由一个字节序列组成,每个字节填充该字节序列的长度
- Zeros:填充字符串由设置为零的字节组成
- ANSIX923:填充字符串由一个字节序列组成,此字节序列的最后一个字节填充字节序列的长度,其余字节均填充数字零
- ISO10126:填充字符串由一个字节序列组成,此字节序列的最后一个字节填充字节序列的长度,其余字节填充随机数据
分组对称加密算法有些运算模式要求明文数据的字节长度必须是其块大小的整倍数,因此在加密明文数据之前我们必须对明文数据进行填充。