AHS-Soft ® :: Нейро-программирование :: Синапсы: Роена, Альдера, Нонжена
AHS-SOFT

AHS-SOFT


Автор поста AHSSOFT

Создаём зашифрованный RAR архив на PHP

10.04.2018 AHSSOFT Поделиться... 0 5.0/5.0 (2)

Создаём зашифрованный RAR архив на PHP

Часто, в веб-проектах необходимо создавать rar архив с паролем, в котором зашифрован список файлов и папок внутри него. Многие программисты не знают, как реализовать управление таким архивом на языке php, но мы придём им на помощь, и покажем, как создать и управлять "раром" на php. Библиотека из PECL (php_rar) позволяет лишь распаковывать файлы из архива, мы же научим вас упаковывать (архивировать) файлы в rar на php, при этом кодируя, как сами файлы, так и их имена, для защиты от просмотра без ввода правильного пароля.

Нам понадобятся 5 основных функций в php коде, чтобы управлять rar файлами:

  • 1. Создать новый архив rar на php (rarCreateNewArchive);
  • 2. Добавить файлы в существующий архив rar и сразу зашифровать список файлов в архиве (назначив пароль) (rarAddEncryptedFiles);
  • 3. Получить список файлов из существующего, зашифрованного rar архива на php (rarGetEntryList);
  • 4. Удалить зашифрованные файлы из существующего rar архива на php (rarDeleteFiles);
  • 5. Зашифровать определённые файлы в rar архиве на php, или зашифровать список файлов в архиве (назначив пароль) (rarSetEncryptionFiles).

Итак, начнём.
!Внизу страницы можно скачать сам код класса, в котором реализованы сами функции шифрования-дешифрования файлов в rar архиве, а здесь мы приведём пару примеров, как работать с функциями класса в ваших php файлах.

Создать rar архив на php

Создаём новый архив rar на php и добавляем в него наши файлы

Сразу условимся, что наши тестовые файлы, которые мы хотим добавить в rar архив на php, находятся в корневой папке сайта в подпапке '/rartest/files/'.
А тестовые архивы 'рар' мы будем создавать в подпапке '/rartest/'.
Сам файл класса 'rarpack.php' лежит тут же, в корне сайта.

В начале кода подключаем наш класс для работы с rar архивами на php:
include_once($_SERVER["DOCUMENT_ROOT"] . "/rarpack.php");

Создаём новый файл архива (если он существует, то он будет очищен и станет пустым! обратите на это особое внимание!)
$_rar_new = new rarCreateNewArchive($_SERVER["DOCUMENT_ROOT"] . "/rartest/test1.rar", "password_rar_file");
Первым параметром мы указали полный путь к новому файлу архива, вторым - пароль к самому файлу rar. Это не пароль на шифрование файлов, это именно пароль для распаковки самого файла архива.

Добавляем несколько файлов, на лету шифруя их:
$_rar_new->rarAddEncryptedFiles($_SERVER["DOCUMENT_ROOT"] . "/rartest/files/file001.txt", "password_txt_file", "file001.txt", "AES_256");
$_rar_new->rarAddEncryptedFiles($_SERVER["DOCUMENT_ROOT"] . "/rartest/files/file002.txt", "password_txt_file", "file_big.txt", "AES_256");
$_rar_new->rarAddEncryptedFiles($_SERVER["DOCUMENT_ROOT"] . "/rartest/files/file003.txt", "password_txt_file", "testfolder/file_small.txt", "AES_256");

Первый параметр, это полный путь к добавляемому файлу. Второй, это пароль для шифрования этого файла внутри архива, третий это имя файла (вместе с папкой если нужно) которое будет назначено этому файлу в самом архиве (если вы указываете папку, или несколько - то эти папки будут созданы, и, при распаковке данный файл будет помещён именно в эти папки), четвёртый параметр это метод шифрования, он не обязателен к указанию и всегда равен AES_256.

Внимание! Мы в текущем коде не устанавливаем новый пароль самому rar архиву, мы назначаем пароль закодированным файлам в этом архиве. Если Вы хотите, чтобы ваш архив при распаковке у скачавшего его пользователя просил только один пароль - устанавливайте пароль шифрования при добавлении файлов в архив такой же, как и сам пароль rar архива при его создании.

Наши файлы внутри архива зашифрованы, но их список - пока нет. Любой? кто откроет наш rar архив в программной оболочке, увидит какие же папки и файлы мы туда добавили (хоть и не сможет посмотреть их содержимое). Если вам это не нужно и вы хотите скрыть список файлов и папок, то мы зашифруем их.
Чтобы зашифровать весь список в rar архиве, просто вызовем метод без указания имени файла:
$_rar_new->rarSetEncryptionFiles("password_file_list", "AES_256");

Первый параметр - пароль (желательно указать такой же, как и сам пароль архива, чтобы не вводить разные пароли пользователю), второй - метод шифрования (всегда AES_256).
Если нужно спрятать только некоторые файлы в списке, указываем их в третьем параметре:
$_rar_new->rarSetEncryptionFiles("password_file_list", "AES_256", "file_big.txt");
$_rar_new->rarSetEncryptionFiles("password_file_list", "AES_256", "testfolder/file_small.txt");

Внимание! Указываем именно новые имена файлов в нашем архиве, которые мы указывали для них при добавлении файлов в rar.
Закроем наш архив (тем самым сохранив все его изменения на диске): $_rar_new->Close();

Получим список зашифрованных файлов

Откроем наш (или любой другой) зашифрованный архив:
$_rar_new = new rarOpenArchive($_SERVER["DOCUMENT_ROOT"] . "/rartest/test1.rar", "password_rar_file");
Здесь пароль, который указан при создании самого файла rar.

Получим список всех записей в архиве:
$_all_entries = $_rar_new->rarGetEntryList();
if(!$_all_entries) die("Нет записей в архиве!");

Проходим по всем записям архива (зашифрованные списки файлов хранятся в этой переменой как разные записи, которые нельзя увидеть, они также не включаются в подсчет суммы записей count()):

Зашифровать список файлов в rar на php

Добавление новых файлов происходит по именам записей (новых, или уже существующих в архиве). А удаление записей, происходит по дескрипторам записей (Entries) при проходе, либо по дескриптору записи с указанием её имени.

В общем как то так, на самом деле всё гораздо проще, когда вы вникните в суть класса и поймёте, как он работает.
Вот сам код класса php:
Зашифрованный rar архив на php



ДОБАВИТЬ КОММЕНТАРИЙ

G+

AHS-SOFT llc

9 Neepawa Ave, Toronto, ON M6R 1V2, Canada
+1(416) 5-32-40-48



AHS-SOFT LLC на карте

Картинки постов

Картинка 5Картинка 1Картинка 15Картинка 7Картинка 20Картинка 16Картинка 9

Разработка

Если Вы нуждаетесь в разработке серьезных нейро-приложений для WEB, либо DESKTOP платформы, возможно, Мы сможем Вам помочь.


Обращайтесь к нам на странице Контакты. Кратко опишите идею вашего проекта и сроки, которые Вы готовы потратить на вашу идею.

Поделитесь

Все права сохранены! | © AHS-SOFT ® 2007-2018 | ahs-soft.com

Заголовок: Загрузить изображения

HTML или Текст:

Закрепить в топе  ::  Картинка поста: Картинка 1 Картинка 2 Картинка 3 Картинка 4 Картинка 5 Картинка 6 Картинка 7 Картинка 8 Картинка 9 Картинка 10 Картинка 11 Картинка 12 Картинка 13 Картинка 14 Картинка 15 Картинка 16 Картинка 17 Картинка 18 Картинка 19 Картинка 20

Комментарий: