2011-12-20 12 views
-1

私は画像の暗号化に関するプロジェクトを行っています。私たちはイメージ上にブローフィッシュのエンサイクロペディアを使用しています。 Paul Kocherのコードhttp://www.schneier.com/blowfish-download.htmlによると、著者は私がencyptする画像ピクセルを使用する通りである暗号化するためにL = 1およびL = 2を使用し、出力は16進値であろう。ここでブローフィッシュ・アルゴ画像の場合

void main(void) { 
unsigned long L = 1, R = 2; 
BLOWFISH_CTX ctx; 

Blowfish_Init (&ctx, (unsigned char*)"TESTKEY", 7); 
Blowfish_Encrypt(&ctx, &L, &R); 
printf("%08lX %08lX\n", L, R); 
if (L == 0xDF333FD2L && R == 0x30A71BB4L) 
    printf("Test encryption OK.\n"); 
else 
    printf("Test encryption failed.\n"); 
Blowfish_Decrypt(&ctx, &L, &R); 
if (L == 1 && R == 2) 
    printf("Test decryption OK.\n"); 
else 
    printf("Test decryption failed.\n"); 
} 

を次のように主な機能です。今問題は、出力された16進数値を.jpgや.tiffなどの有効な画像フォーマットに変換して、それをブローフィッシュの暗号化イメージとして表示する方法です。

また、各ピクセルを暗号化せずにイメージ全体を暗号化できる場合は、他の方法をお勧めしますか?

これに関する提案が必要です。事前にご相談ください

+0

一般的な考えを示していますが、画像のピクセルを暗号化するか、画像のファイルコンテンツのですか?後者の場合、暗号化にはフォーマットが壊れてしまいますので、元のイメージとして保存して読み込むことはできません。 – CharlesB

+0

@charlesBアルゴリズムを使用してファイルコンテンツを暗号化する方法を教えてください。ファイルデータで動作するアルゴリズムはありませんが、すべてのアルゴリズムは数字を使用して暗号化を行います。アイデアがあれば教えてください – anupsahu

+0

あなたは質問に答えませんでした。ピクセルデータとファイルデータは異なるものですが、どのデータをエンコードしたいですか? – CharlesB

答えて

0

ライブラリは、1つの長い整数をもう1つの長い整数に暗号化します。この番号の場所は関係ありません。

あなたがしなければならないのは、画像のピクセルをループして、長整数値(たぶん32ビットですがあなたのプラットフォームに依存します)を暗号関数にコピーし、暗号化された長整数値を暗号化してコピーします他の画像。

唯一決めなければならないのは、ヘッダーを含む画像ファイル全体、または画像データブロックのみを暗号化したいのですか?

ファイル全体を暗号化する場合は、他のBlowfishユーティリティを使用して暗号化/復号化することができますが、それは誰にも分かりません。イメージブロックだけを暗号化すれば、他の人がそのイメージであることを知り、それを開くことができますが、ランダムな画像が表示されますが、ソフトウェアで暗号化/復号化することしかできません。

// assuming Blowfish_Encrypt is context,input,output 
unsigned char *data = image.get_pointer_to_data(); 
int step = sizeof(unsigned long); 
for (int y=0;y<rows;y++) { 
    for (int x=0;x<cols;x+=step) { 
     memcpy(&L,data,step);  
     Blowfish_Encrypt(&ctx, &L, &R); 
     memcpy(data,&R,step);  
     data += step; 
    } 
} 

ないoptomisedソリューション、そしてあなたは、パディングの少し注意する必要があります - しかし、あなたは

+0

Matlabを使用して、暗号化画像のエントロピーと相関を計算します。だから、もし私がイメージ全体を暗号化しなければ、matlabのソフトウェアでイメージを読むことができなくなる。だから私は必要なのは、データブロックを暗号化することです。だから問題は、暗号化の出力は、有効な画像の日付ではない16進数です。ですから、画像の暗号化と解読の助けが必要です。出力はすべての画像処理ツールで認識されるべきです。 – anupsahu

+0

@anupsahu - 出力は16進数ではありません。これは整数で、メモリ内の32,0、および1のブロックであり、ピクセルまたはその他のものである可能性があります –

関連する問題