0

さて、私はビデオ処理プロジェクトに取り組んでおり、これには各フレームの暗号化とファイル (outputenc.avi) への書き込みが含まれます。XOR操作を使用して各ファイルを暗号化するためにkey.jpgを使用しますが、問題は復号化中です。キーと処理中のフレームは、寸法384 * 288のグレースケール画像です。

暗号化

capWebcam.read(matOriginal);
if(matOriginal.empty()==true)
    return;
cv::Mat temp;
cv::resize(matOriginal,matOriginal,dsize,0,0,cv::INTER_CUBIC);
cv::cvtColor(matOriginal,matProcessed,CV_BGR2GRAY);

cv::bitwise_xor(matProcessed,key,temp);
output_enc_cap.write(temp);

復号化

capfile.read(temp);
if(temp.empty()==true)
      return;

cvtColor(temp,temp,CV_BGR2GRAY);
cv::bitwise_xor(temp,key,temp);
4

1 に答える 1

1

コードにはさらに問題があります。

まず、フレームをグレースケールに変換します。

cv::cvtColor(matOriginal,matProcessed,CV_BGR2GRAY);

次に、ファイルに送信します。この時点から、カラー イメージを元に戻す方法はありません。

次に、(おそらくロッシー) コーデックを使用して画像を保存します。非可逆コーデックは、その過程で一部の情報を失います。また、圧縮された画像が元の画像と同じように見えることを保証するだけです。同一であることを保証するものではありません。そして、「暗号化された」画像はノイズであるため、結果はノイズになります。しかし、おそらくまったく異なるノイズです。

次に、この行は、その場で機能しないアルゴリズムをその場で実行しようとします。しかし、それ以上に、ファイルにグレースケールの画像を書き込んでから、それをカラーであるかのようにグレースケールに変換しようとします。完全なナンセンス。

cvtColor(temp,temp,CV_BGR2GRAY);

次に、「暗号化された」画像以外の画像で「解読アルゴリズム」を試します。

申し訳ありませんが、コードの各行はナンセンスです。

コーデックについて学び、暗号化とセキュリティについて学び、このトピックに関して他の人が行ったことを読んでから始めてください。

ところで、独自の暗号化アルゴリズムを作成することは最善のアイデアではありません (少なくとも暗号化の専門家でない場合): https://security.stackexchange.com/questions/25585/is-my-developers-home-brew-password -security-right-or-wrong-and-Why

于 2013-03-22T10:41:06.823 に答える