2013-03-22 2 views
0

좋아요. 저는 비디오 프로세싱 프로젝트를 진행하고 있습니다. 여기에는 각 프레임의 암호화와 파일 (outputenc.avi)에 대한 쓰기가 포함되어 있습니다. key.jpg를 사용하여 XOR 연산을 사용하여 각 파일을 암호화합니다. 문제는 암호 해독 중에 발생합니다. 키 프레임과 처리중인 프레임이 382 * 288 크기의 회색 스케일 이미지입니다.XOR을 사용한 이미지 암호화

암호 화

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); 
+0

내 느낌은 당신에 대해 불만이있어 문제가 손실로 인해 수도 있다는 것입니다 귀하의 프로세싱 체인 어딘가에 압축. JPG는 손실입니다. 나는 AVI에 대해 모른다. 그러나 더 큰 문제는 (당신이 옳다고 이해한다고 가정 할 때) 같은 키로 각 ​​프레임을 XOR하는 것이 좋은 암호화라고 생각한다는 것입니다. 그것은 거의 100 년 전에 부서진 Vigenere 암호와 거의 같습니다. 자체 암호화를 시도하는 대신 AES의 좋은 구현을 살펴보십시오 (libgcrypt는 좋음). –

+0

선생님, 저 프로파일 암호화가 필요합니다. – hunter

답변

1

코드에 더 문제가 있습니다

가 먼저 그레이 스케일로 프레임을 변환 :

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

것은 다음 보내기그것은 당신의 파일에. 이 시점부터는 컬러 이미지를 다시 얻을 수있는 방법이 없습니다.

그런 다음 손실이 많은 코덱으로 이미지를 저장합니다. 손실 코덱은 프로세스의 일부 정보를 잃어 버립니다. 압축 된 이미지가 원본 이미지와 비슷하게 보입니다. 그것이 동일하다는 보장은 없습니다. 그리고 "암호화 된"이미지가 노이즈이기 때문에 노이즈가 발생합니다. 그러나 아마 완전히 다른 소음.

그런 다음이 줄은 제자리에서 작동 할 수없는 알고리즘을 현재 위치에서 시도합니다. 하지만 그 이상으로 파일에 그레이 스케일 이미지를 작성한 다음 컬러 인 것처럼 그레이 스케일로 변환하려고합니다. 완전 말도 안돼.

cvtColor(temp,temp,CV_BGR2GRAY); 

그런 다음 "암호화 된"이외의 이미지에 대해 "해독 알고리즘"을 시도해보십시오.

죄송합니다. 그러나 코드의 각 줄은 의미가 없습니다.

제 권고는 더 낮은 것으로 시작하는 것입니다. 코덱에 대해 배우고 암호화 및 보안에 대해 배우고 다른 사람들이이 주제에 대해 읽은 다음 시작하십시오.

, BTW 자신의 암호화 알고리즘을 만드는 것은 (당신이 criptography의 전문가 아닌 이상) 좋은 생각되지 않습니다 : https://security.stackexchange.com/questions/25585/is-my-developers-home-brew-password-security-right-or-wrong-and-why

+0

선생님 저는 그레이 스케일 버전의 비디오 만 저장해야합니다. 나는 이미지 처리에 매우 익숙하다. 내가 말도 안되는 코드를 만들었다면 미안하다. – hunter

관련 문제