プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

Blowfishアルゴリズムのデータ暗号化と復号化とは何ですか?


Blowfishは、1993年12月にBruteSchneierによって発明された対称ブロック暗号アルゴリズムです。Blowfishアルゴリズムにはいくつかの利点があります。ハードウェアの実装に適用可能で効率的であり、ライセンスは必要ありません。 Blowfishアルゴリズムの基本演算子には、テーブルルックアップ、加算、およびXORが含まれています。このテーブルには、4つのSボックスと1つのPアレイが含まれています。

Blowfishは、Feistelラウンドに依存する暗号であり、使用されるF関数の設計は、ソフトウェアでより高速かつ効果的に同じセキュリティをサポートするためにDESで使用される原則を単純化することになります。

Blowfishは64ビットの対称ブロック暗号であり、32〜448ビット(14バイト)の可変長キーが必要です。このアルゴリズムは、64ビットの平文を64ビットの暗号文に効果的かつ安全に暗号化するために作成されました。

アルゴリズム用に選択された操作は、テーブルルックアップ、モジュラス、加算、ビット単位の排他的論理和、または32ビットプロセッサでの情報の暗号化と復号化に必要な時間を最小限に抑えることでした。

DESと同様に、Blowfishには暗号化と復号化のための16ラウンドのFeistelネットワークが含まれています。ただし、Blowfishのすべてのラウンドで、左右の32ビットのデータが変更されます。DESは右側の32ビットのみを変更して、次のラウンドの左側の32ビットに展開します。

Blowfishには、ビット単位の排他的論理和演算が含まれています。これは、F関数によって変更されるか、次のラウンドで右側の32ビットに伝搬される前に左側の32ビットで実装されます。

Blowfishには、16ラウンド後に実装される2つの排他的論理和演算とスワップ演算も含まれています。この操作は、DESに実装されている順列関数とは異なります。

暗号化プロセス −プレーンテキストとしての情報画像と暗号化キーを含む暗号化プロセスの2つのニュースがあります。この方法では、元の画像データのビットストリームがBlowfishアルゴリズムのブロック長に分割されます。

画像ヘッダーの暗号化は許可されておらず、ビットマップピクセルまたは配列の開始はファイルのヘッダーの直後から始まります。配列のバイトコンポーネントは左から右に行順に保存され、各行は画像の1つのスキャンラインを定義し、画像の行は上から下に暗号化されます。

復号化プロセス −暗号化された画像は、Blowfishアルゴリズムの同等のブロック長に上から下に分割されます。最初のブロックは復号化機能に入力され、同等の暗号化キーを使用して画像を復号化できますが、サブキーの適用は逆になります。復号化のプロセスは、画像のさまざまなブロックで上から下に拡張されます。

Blowfishの基本的なアルゴリズムは次のとおりです-

xを2つの32ビットの半分に分割します:x L 、x R

次に、i=1から16の場合;

x L =x L XOR Pi

x R =F(x L )XOR x R

x Lを交換します およびxR

16回目以降 ラウンド、スワップx L およびxR 最後のスワップを元に戻すためにもう一度。

次に、暗号文=x Lの連結 およびxR 、x R =x R XORP17およびxL =x L XOR P 18


  1. C言語のアルゴリズムとフローチャートとは何ですか?

    アルゴリズムは、問題を解決するのに役立つ段階的な手順です。文章のように英語で書かれている場合は、「擬似コード」と呼ばれます。 アルゴリズムのプロパティ アルゴリズムは次の5つのプロパティを持っている必要があります- 入力 出力 有限性 明確さ 有効性 例 3つの数値の平均を求めるアルゴリズムは次のとおりです- 開始 a、b、cの3つの数字を読む 計算合計=a+ b + c 計算平均=合計/3 平均値を印刷 停止 フローチャート アルゴリズムの図式表現はフローチャートと呼ばれます。 フローチャートで使用されている記号は以下のとおりです- 名前 シンボル 目的 ターミナル

  2. データ構造における時間と空間の複雑さ

    アルゴリズム分析 アルゴリズムの効率の分析は、実装前と実装後の2つの異なる段階で実行できます。 事前分析-これは、アルゴリズムの理論的分析として定義されます。アルゴリズムの効率は、他のすべての要因を想定して測定されます。プロセッサの速度は一定であり、実装には影響しません。 事後分析-これは、アルゴリズムの経験的分析として定義されます。選択したアルゴリズムは、プログラミング言語を使用して実装されます。次に、選択したアルゴリズムがターゲットコンピュータマシンで実行されます。この分析では、実行時間や必要なスペースなどの実際の統計が収集されます。 アルゴリズム分析は、関連するさまざまな操作の実