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。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP