Blowfish算法中的数据加密和解密是什么?
Blowfish是一种对称分组密码算法,由布鲁斯·施奈尔于1993年12月发明。Blowfish算法具有若干优点。它适用于硬件实现且效率高,并且无需许可证。Blowfish算法的基本运算包括查表、加法和异或。表包含四个S盒和一个P数组。
Blowfish是一种依赖于Feistel轮次的密码,所使用的F函数的设计相当于简化了DES中使用的原理,以在软件中以更高的速度和效率支持相同的安全性。
Blowfish是一种64位的对称分组密码,需要一个长度可变的密钥,从32位到448位(14字节)。该算法旨在有效且安全地将64位的明文加密成64位的密文。
为该算法选择的运算包括查表、模运算、加法和按位异或,以最大程度地减少在32位处理器上加密和解密信息所需的时间。
与DES一样,Blowfish包括一个用于加密和解密的16轮Feistel网络。但在Blowfish的每一轮中,数据左右32位都会发生变化,这与DES不同,DES仅更改右32位以发展成为下一轮的左32位。
Blowfish包括一个按位异或运算,在由F函数更改或传播到右32位以进行下一轮之前,将其应用于左32位。
Blowfish还包括两个异或运算,在16轮之后执行,以及一个交换运算。此操作不同于在DES中实现的置换函数。
加密过程 - 有两种加密过程新闻,包括信息图像作为明文和加密密钥。在这种方法中,原始图像数据比特流被分成Blowfish算法的块长度。
图像头文件不被授权加密,位图像素或数组的开始紧接在文件头之后。数组的字节组件按从左到右的行顺序保存,每一行定义图像的一条扫描线,并且图像的行从上到下加密。
解密过程 - 加密图像从上到下被分成等效的Blowfish算法块长度。第一个块输入到解密函数,并且可以使用等效的加密密钥来解密图像,但子密钥的应用是反向的。解密过程随着图像从上到下的不同块而扩展。
Blowfish的基本算法如下:
将x分成两个32位半部分:xL、xR。
然后,对于i = 1到16;
xL = xLXOR Pi
xR = F(xL) XOR xR
交换xL和xR
经过第16轮后,再次交换xL和xR以撤消最后一次交换。
然后,密文 = xL和xR的串联,xR = xR XOR P17和xL = xL XOR P18。