암호화 :C의 AES256 패딩 7 표준
while(!feof(fp)){
memset(plain_text, 0, sizeof(plain_text));
retval = fread(plain_text, 1, 16, fp);
if(!retval) break;
for(i=0; i<16; i++){
if(plain_text[i] == 0){
for(j=i; j<16; j++){
plain_text[j] = 0x0i;
}
break;
}
}
gcry_cipher_encrypt(hd, encBuffer, txtLenght, plain_text, txtLenght);
fwrite(encBuffer, 1, 16, fpout);
}
해독 : 내가 PKCS # 7 표준에서 이동식 패딩을 추가하기 위해 노력하고있어하지만 난 문제가
while(!feof(fp)){
memset(plain_text, 0, sizeof(plain_text));
retval = fread(plain_text, 1, 16, fp);
if(!retval) break;
gcry_cipher_decrypt(hd, encBuffer, txtLenght, plain_text, txtLenght);
for(i=0; i<16; i++){
if(encBuffer[i] == 0x0i){
j = 0;
j += i;
if(encBuffer[++i] == 0x0j){
last = 1;
i--;
j=i;
printf("found a %d\n", i);
break;
}
else i--;
}
}
//printf("%d\n", j);
if(last == 1) fwrite(encBuffer, 1, j, fpout);
else fwrite(encBuffer, 1, 16, fpout);
}
.
txt 파일로 작업하면 프로그램이 제대로 작동하지만 을 해독하려고 시도하면 일부 tar.gz 또는 pdf 파일의 크기가 파일 크기의 절반으로 줄어 듭니다!
28272 prova
28272 out
12147 origdec
내가 libgcrypt를에 사용하고 있습니다 : 예를 들어
가의 크기는 28,272 바이트입니다 tar.gz의 아카이브를 보자 (PROVA 원본 파일, 밖으로 암호화 된 파일 및 origdec는 해독 된 파일입니다) GNU/linux!
'while'조건이 약간 어리석지 않습니까? –
'0x0i' 및'0x0j' 란 무엇입니까? 그것도 컴파일해서는 안됩니다. –
@JoachimPileborg 그들은 두 int입니다! 나는 내부 배열을 검색하기 위해 인덱스로 사용한다. – polslinux