Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
abc_privet
8 / 8 / 2
Регистрация: 17.03.2012
Сообщений: 532
Записей в блоге: 2
1

как зашифроват в linux на php

16.04.2012, 13:06. Просмотров 1452. Ответов 26
Метки нет (Все метки)

Нужно зашифровать файлы фоток пользователей а при входе пользователя на сайт расшифровать и показать.

Как это сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.04.2012, 13:06
Ответы с готовыми решениями:

Как вытянуть параметры (MAC адрес, например) сервера на Linux средствами PHP?
Ребята, подскажите, пожалуйста, как быть. У меня есть локальный сервер на...

php + linux ubuntu x64
привет форумчане, прошу помочь мне освоиться в linux. Как мне юзать lamp? и...

Подключить gd-библиотеку в php в linux
подскажите, как. порывшись по интернету, нашёл несколько вариантов. но как...

IDE для PHP под Linux
Доброго всем времени суток! Подскажите пожалуйста фришную IDE для PHP под...

Html, CSS, PHP editor for Linux (Gnome)
Доброго времени суток! Ни когда раньше не сталкивался с web разработкой, но...

26
Dimedrol
2369 / 932 / 129
Регистрация: 25.04.2009
Сообщений: 2,635
Записей в блоге: 4
16.04.2012, 13:20 2
можно их загружать в какую-то директорию, в .htaccess прописать, что доступа к этим файлам напрямую не будет. Создать файл, к примеру, getphoto.php. Этому файлу можно передавать, к примеру, имя фотографии. Там проверять, если пользователь зарегистрирован и есть доступ к фотографии - выставляем header(Content-type: image/jpg') (зависит от mime изображения) и делаем fread. Все.
1
abc_privet
8 / 8 / 2
Регистрация: 17.03.2012
Сообщений: 532
Записей в блоге: 2
16.04.2012, 13:27  [ТС] 3
Цитата Сообщение от Dimedrol Посмотреть сообщение
можно их загружать в какую-то директорию, в .htaccess прописать, что доступа к этим файлам напрямую не будет. Создать файл, к примеру, getphoto.php. Этому файлу можно передавать, к примеру, имя фотографии. Там проверять, если пользователь зарегистрирован и есть доступ к фотографии - выставляем header(Content-type: image/jpg') (зависит от mime изображения) и делаем fread. Все.
А если это виртуальный хостинг. Тот кто его обслуживает будет иметь доступ к фотографиям?
0
Dimedrol
2369 / 932 / 129
Регистрация: 25.04.2009
Сообщений: 2,635
Записей в блоге: 4
16.04.2012, 13:43 4
Да... Вы из браузера напрямую не сможете эту картинку запросить.
1
abc_privet
8 / 8 / 2
Регистрация: 17.03.2012
Сообщений: 532
Записей в блоге: 2
16.04.2012, 13:54  [ТС] 5
Цитата Сообщение от Dimedrol Посмотреть сообщение
Да... Вы из браузера напрямую не сможете эту картинку запросить.
Я думал что можно при запуске скрипта взять ключь из базы данных, раскодировать фото, скопировать его во временную дирикторию и показать в браузере.

Добавлено через 1 минуту
Цитата Сообщение от abc_privet Посмотреть сообщение
Я думал что можно при запуске скрипта взять ключь из базы данных, раскодировать фото, скопировать его во временную дирикторию и показать в браузере.

Основная задача защитить всю базу данных и файлы от кражи.
0
Dimedrol
2369 / 932 / 129
Регистрация: 25.04.2009
Сообщений: 2,635
Записей в блоге: 4
16.04.2012, 14:13 6
Ну так вы и защитите. Ни кто без разрешения не сможет посмотреть эту фотографию. Пользователи даже не будут знать, в какой директории размещаются файлы.
1
abc_privet
8 / 8 / 2
Регистрация: 17.03.2012
Сообщений: 532
Записей в блоге: 2
16.04.2012, 14:32  [ТС] 7
Цитата Сообщение от Dimedrol Посмотреть сообщение
Ну так вы и защитите. Ни кто без разрешения не сможет посмотреть эту фотографию. Пользователи даже не будут знать, в какой директории размещаются файлы.
я хочу защитить не от пользователей, а от копирования всей базы картинок персоналом сервера.
0
Dimedrol
2369 / 932 / 129
Регистрация: 25.04.2009
Сообщений: 2,635
Записей в блоге: 4
16.04.2012, 14:43 8
Вы представляете какая будет нагрузка на сервер?
Можно перевести картинку в base64 и потом воспользоваться алгоритмом DES. Но это настолько долго все будет шифроваться и дешифроваться...

Добавлено через 8 минут
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
 
define('KEY', 'kjH', false);
 
function encrypt($str, $key)
{
    $block = mcrypt_get_block_size('des', 'ecb');
    $pad = $block - (strlen($str) % $block);
    $str .= str_repeat(chr($pad), $pad);
 
    return mcrypt_encrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);
}
 
function decrypt($str, $key)
{   
    $str = mcrypt_decrypt(MCRYPT_DES, $key, $str, MCRYPT_MODE_ECB);
 
    $block = mcrypt_get_block_size('des', 'ecb');
    $pad = ord($str[($len = strlen($str)) - 1]);
    return substr($str, 0, strlen($str) - $pad);
}
 
$filename = dirname(__FILE__).'/test.jpg';
$imgbinary = fread(fopen($filename, "r"), filesize($filename));
$base64 = 'data:image/jpg;base64,' . base64_encode($imgbinary);
echo encrypt($base64, KEY);
1
abc_privet
8 / 8 / 2
Регистрация: 17.03.2012
Сообщений: 532
Записей в блоге: 2
16.04.2012, 14:45  [ТС] 9
Цитата Сообщение от Dimedrol Посмотреть сообщение
Вы представляете какая будет нагрузка на сервер?
Можно перевести картинку в base64 и потом воспользоваться алгоритмом DES. Но это настолько долго все будет шифроваться и дешифроваться...
Сколько, если картинки одного пользователя jpeg 50-200 kb от одной до 100.
То есть 20 Мбайт. Сколько времени займет кодирование?
0
r36
236 / 233 / 42
Регистрация: 16.03.2011
Сообщений: 750
16.04.2012, 14:49 10
Нагрузка увеличится конечно.
Можно использовать простое кодирование например тот же xor: Исходный файл читаем по символу или блоками, +файл или строку для пароля.
PHP
1
2
3
$file_char='@';//символ
$pass_char='P';//пароль для символа
echo $cr_char=$file_char^$pass_char;
Можно требовать загрузки ключевого файла от пользователя или использовать простую строку.
0
Dimedrol
2369 / 932 / 129
Регистрация: 25.04.2009
Сообщений: 2,635
Записей в блоге: 4
16.04.2012, 14:52 11
Кодирование 0.089699 сек.
Декодирование 0.069142 сек.
Size: 35.2 KB (36013 bytes)
Type: JPEG image (image/jpeg)
0
abc_privet
8 / 8 / 2
Регистрация: 17.03.2012
Сообщений: 532
Записей в блоге: 2
16.04.2012, 14:54  [ТС] 12
А как такой вариант, сжать в zip с паролем, пароли файлов хранить в базе данных?
0
Dimedrol
2369 / 932 / 129
Регистрация: 25.04.2009
Сообщений: 2,635
Записей в блоге: 4
16.04.2012, 14:55 13
Ну доступ то к базе, как я понял, у людей есть? Тогда смысла нет. В моем варианте вы можете подставлять в константу свой ключ.
0
abc_privet
8 / 8 / 2
Регистрация: 17.03.2012
Сообщений: 532
Записей в блоге: 2
16.04.2012, 14:59  [ТС] 14
Цитата Сообщение от Dimedrol Посмотреть сообщение
Ну доступ то к базе, как я понял, у людей есть? Тогда смысла нет. В моем варианте вы можете подставлять в константу свой ключ.
Да, но картинки не так просто будет скопировать.

Добавлено через 2 минуты
Цитата Сообщение от Dimedrol Посмотреть сообщение
Кодирование 0.089699 сек.
Декодирование 0.069142 сек.
Size: 35.2 KB (36013 bytes)
Type: JPEG image (image/jpeg)
То есть, 20М 24 секунды. Немало.....
0
r36
236 / 233 / 42
Регистрация: 16.03.2011
Сообщений: 750
16.04.2012, 15:03 15
abc_privet с xor будет быстрей работать.
0
Dimedrol
2369 / 932 / 129
Регистрация: 25.04.2009
Сообщений: 2,635
Записей в блоге: 4
16.04.2012, 15:04 16
Попробовал побольше фотку взять. 0.4 секунды на 270.3 KB (276824 bytes)
0
abc_privet
8 / 8 / 2
Регистрация: 17.03.2012
Сообщений: 532
Записей в блоге: 2
16.04.2012, 16:28  [ТС] 17
Цитата Сообщение от Dimedrol Посмотреть сообщение
Попробовал побольше фотку взять. 0.4 секунды на 270.3 KB (276824 bytes)
А если такая идея: Кодировать только первые 100 байт. Интересно будет ли открываться картинка с исорченным началом?
0
Dimedrol
2369 / 932 / 129
Регистрация: 25.04.2009
Сообщений: 2,635
Записей в блоге: 4
16.04.2012, 16:31 18
Дастаточно первый символ в файле заменить и все будет испорчено.
1
abc_privet
8 / 8 / 2
Регистрация: 17.03.2012
Сообщений: 532
Записей в блоге: 2
16.04.2012, 17:06  [ТС] 19
Цитата Сообщение от Dimedrol Посмотреть сообщение
Дастаточно первый символ в файле заменить и все будет испорчено.
Нужно проверить, так как иногда вначале идет коментарий и вьюверы могут быть умными.

Добавлено через 4 минуты
Если для кодирования файлов использовать пароль юзера, то с хоста нельзя будет никак украсть базу, даже теоретически? У каждого юзера его картинки закодированны его личным паролем.
0
Dimedrol
2369 / 932 / 129
Регистрация: 25.04.2009
Сообщений: 2,635
Записей в блоге: 4
16.04.2012, 17:06 20
Ну можно заменить, к примеру, сотый символ с конца
1
16.04.2012, 17:06
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2012, 17:06

От имени какого пользователя работает PHP в Linux?
Здравствуйте! Начал выкладывать свои PHP-скрипты в сеть и возник вопрос, о...

Unable to load dynamic library '/usr/lib/php/20151012/php_intl.dll __at Linux
Возникает ошибка --Unable to load dynamic library...

Как заменить PHP 7 на PHP 5.6 в Ubuntu 16.04? Установлена как модуль Apache 2.4
Переехал на новый VPS а на нем по умолчанию стоит 7 PHP. Я хочу поставить 5.6...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru