Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Zip

6 réponses
Avatar
Kloug
Bonjour,
Y a t il un moyen de protéger un fichier
compressé par un mot de passe ?
Merci de vos pistes
K

6 réponses

Avatar
Chris Hamza
Oui bien sûr .
à l'aide de winrar
"ajouter aux archives " ==> choisir l'onglet " avancé " ==>
et ensuite cliquer sur le bouton ==> " Définir le mot de passe "
c'est assez simple
Avatar
Kloug
>à l'aide de winrar


Oui mais en Php ?
Merci
K
Avatar
Mickael Wolff
Chris Hamza a écrit :
Oui bien sûr .
à l'aide de winrar



Je ne sais pas si tu as remarqué, mais ici, c'est fr.comp.lang.php et
non microsoft.public.fr.windowsxp.debutants.

En tout cas, les API disponibles dans PHP ne permettent pas de
définir un mot de passe. C'est certainement parce qu'il est vain de
vouloir utiliser un mot de passe pour un zip : c'est craqué en quelques
minutes avec de la chance, en quelques heures dans le cas contraire.

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
Sylvain SF
Kloug a écrit :
à l'aide de winrar


Oui mais en Php ?



pour chiffrer des données:

mcrypt_decrypt()
mcrypt_encrypt()
ou
mcrypt_generic[_xxxx]()

pour chiffrer en fichier en sortie:

$fp = fopen('out.bin', 'wb');
stream_filter_append($fp, $algo, STREAM_FILTER_WRITE, $opts);
fwrite($fp, $someStuff);
fclose($fp);

avec $algo le nom de l'algo (eg 'mcrypt.tripledes')
et $opts la clé et un ICV optionnel.

Sylvain.
Avatar
Mickael Wolff
Sylvain SF a écrit :

mcrypt_decrypt()
mcrypt_encrypt()
ou
mcrypt_generic[_xxxx]()



C'est compatible avec le « standard » Zip ? Parce que j'ai essayé
quelque chose, mais ce n'est pas très concluant :

== 8< === exzip.php = <?php

$zip = new ZipArchive ;

$ret = $zip->open('toto.zip', ZipArchive::CREATE) ;

$content =<<<EOS
<?xml version='1.0'?>
<toto>
<blague />
</toto>
EOS;

$zip->addFromString('toto.xml', $content) ;

$cipher = mcrypt_module_open('des', null, 'ecb', null) ;
$iv = mcrypt_create_iv (mcrypt_enc_get_iv_size($cipher), MCRYPT_RAND);
mcrypt_generic_init($cipher, 'totoro', $iv) ;
$crypted = mcrypt_generic($cipher, $content) ;
mcrypt_module_close($cipher) ;

$zip->addFromString('toto.sxml', $crypted) ;
$crypted = null ;

$zip->close() ;
== 8< === exzip.php =
Lorsqu'on ouvre l'archive, il n'y a pas la demande de mot de passe.
Je pense qu'il faut créer un en-tête Zip spécifique pour le fichier
crypté. Et j'ai pas envie de fouiller
http://www.pkware.com/documents/casestudies/APPNOTE.TXT pour trouver
comment ;) Mais à ce que j'ai compris, les outils nécessaires pour faire
un zip « protégé » comme il faut, il n'y a pas la fonctionnalité qui va
bien.


--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org
Avatar
Sylvain SF
Mickael Wolff a écrit :

mcrypt_decrypt()
mcrypt_encrypt()
ou
mcrypt_generic[_xxxx]()



C'est compatible avec le « standard » Zip ? Parce que j'ai essayé
quelque chose, mais ce n'est pas très concluant



non cela ne l'est pas - heureusement.

comme tu l'as indiqué les mots de passe ZIP sont cassés en qlq heures,
ils n'ont donc aucun intérêt, la crypto. ordinaire fournie par PHP est
bien plus robuste; si le but est de chiffrer pour confidentialité et
zipper pour gain de volume, on zippera, puis on chiffrera l'archive,
l'inverse à la réception; si le but est de faire semblant de protégér
un ZIP devant être traité avec un seul unzippeur, il est inutile de
se mentir.

Sylvain.