Encrypter/décrypter une vidéo
Posté : 08 juin 2015, 15:42
bonjour à tous !
Je souhaite encrypter puis décrypter une vidéo (en .avi) avec AES.
Actuellement je fais ainsi :
Le fichier généré est bien encrypté. Voici le décryptage :
Mon problème est que le fichier décrypté pèse 2 octets de moins que l'original, et la vidéo décryptée reste illisible.
on dirait qu'une signature ou un encodage se perd quelque part.
si je met un fichier .txt avec un texte dedans, au lieu d'une vidéo, tout fonctionne bien et mon fichier décrypté est bien identique à la source.
si je compare le fichier avi source et le fichier avi décrypté, en les ouvrant avec le bloc note, j'ai les mêmes caractères des deux côtés.
auriez-vous une idée, ou avez-vous déjà rencontré ce problème ?
Merci de votre aide !
LF
Je souhaite encrypter puis décrypter une vidéo (en .avi) avec AES.
Actuellement je fais ainsi :
Code : Tout sélectionner
<?php
///// mon fichier encrypt :
$file = 'test.avi';
$newfile = 'test_encrypt.avi';
if (!copy($file, $newfile)) {
echo "La copie $file du fichier a échouée...\n";
}
if (!$fp = fopen('test_encrypt.avi',"r+")) {
echo "Echec de l'ouverture du fichier";
exit;
}
else {
while(!feof($fp)) {
// On récupère une ligne
$Ligne = fgets($fp,4096);
// On stocke l'ensemble des lignes dans une variable
$Fichier .= $Ligne;
//// ici, on encode les lignes ..........
}
fclose($fp); // On ferme le fichier
}
if (!$fp = fopen('test_encrypt.avi',"w+")) {
echo "Echec de l'ouverture du fichier";
exit;
}
else {
include 'AES.php';
$imputKey = "encryptor key";
$blockSize = 256;
$aes = new AES($Fichier, $imputKey, $blockSize);
$enc = $aes->encrypt();
$aes->setData($enc);
fputs($fp, $enc);
// echo $enc;
echo "traité";
fclose($fp); // On ferme le fichier
}
?>Code : Tout sélectionner
<?php
//// mon fichier decrypt
$file = 'test_encrypt.avi';
$newfile = 'test_decrypt.avi';
if (!copy($file, $newfile)) {
echo "La copie $file du fichier a échoué...\n";
}
if (!$fp = fopen('test_decrypt.avi',"r+")) {
echo "Echec de l'ouverture du fichier";
exit;
}
else {
while(!feof($fp)) {
// On récupère une ligne
$Ligne = fgets($fp,4096);
// On stocke l'ensemble des lignes dans une variable
$Fichier .= $Ligne;
//// ici, on encode les lignes ..........
}
fclose($fp); // On ferme le fichier
}
if (!$fp = fopen('test_decrypt.avi',"w+")) {
echo "Echec de l'ouverture du fichier";
exit;
}
else {
include 'AES.php';
$imputKey = "encryptor key";
$blockSize = 256;
$aes = new AES($Fichier, $imputKey, $blockSize);
$dec = $aes->decrypt();
$aes->setData($dec);
fputs($fp, $dec);
// echo $enc;
echo "traité";
fclose($fp); // On ferme le fichier
}
//////////////
?>on dirait qu'une signature ou un encodage se perd quelque part.
si je met un fichier .txt avec un texte dedans, au lieu d'une vidéo, tout fonctionne bien et mon fichier décrypté est bien identique à la source.
si je compare le fichier avi source et le fichier avi décrypté, en les ouvrant avec le bloc note, j'ai les mêmes caractères des deux côtés.
auriez-vous une idée, ou avez-vous déjà rencontré ce problème ?
Merci de votre aide !
LF