Page 1 sur 1

remplacer le contenu d'un fichier texte sur le serveur après l'avoir crypté

Posté : 08 juin 2015, 12:29
par LittleFairy
bonjour à tous et merci de votre aide,

voilà mon souci :
je souhaite crypter des données contenues dans un fichier texte, puis remplacer les données en clair dans le fichier par celles cryptées.

j'ai effectué plusieurs tests :
j'ouvre mon fichier texte (avec fopen)
je crypte (avec AES)
j'enregistre (avec fputs)
si j'ouvre le fichier avec w+ (lecture écriture en remplacement) mais que je remplace le texte par un autre sans crypter, ça fonctionne.
si j'ouvre le fichier avec r+(lecture écriture) et que je crypte les données, elles se placent à la suite des données en clair.
si j'ouvre le fichier avec w+ et que je crypte les données, j'ai une erreur "invalid data" qui provient de mon fichier aes.
comment crypter les données ET remplacer les données en clair ?

je vous donne un peu de code :

Code : Tout sélectionner

include 'AES.php'; if (!$fp = fopen('example-test2.txt',"w+")) { // si je met // if (!$fp = fopen('example-test2.txt',"r+")) { // à la place, ça met le code crypté à la suite. echo "Echec de l'ouverture du fichier"; exit; } else { while(!feof($fp)) { // je récupère une ligne $Ligne = fgets($fp,4096); // je stocke l'ensemble des lignes dans une variable $Fichier .= $Ligne; // j'encrypte avec AES $imputKey = "encryptor key"; $blockSize = 256; $aes = new AES($Fichier, $imputKey, $blockSize); $enc = $aes->encrypt(); $aes->setData($enc); } // puis je copie les nouvelles données fputs($fp, $enc); fclose($fp); // je ferme le fichier }
Merci de vos conseils,

LF

Re: remplacer le contenu d'un fichier texte sur le serveur après l'avoir crypté

Posté : 08 juin 2015, 14:05
par LittleFairy
j'ai trouvé,
il fallait d'abord ouvrir et lire le fichier, puis le refermer, et le ré ouvrir en w+.
ce qui donne :

Code : Tout sélectionner

if (!$fp = fopen('test.txt',"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.txt',"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 }
si ça peut servir à d'autres...