С Новым годом! Форум программистов, компьютерный форум, киберфорум
PHP
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/76: Рейтинг темы: голосов - 76, средняя оценка - 4.62
3 / 3 / 2
Регистрация: 16.01.2013
Сообщений: 471

Способы закодировать строку, с возможностью раскодировать

07.02.2017, 08:03. Показов 14976. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Искал в интернете и не смог найти, если какие-то функции, которые позволили бы изменить строку, до неузнаваемости, передать её другому файлу и потом раскодировать в исходный вариант?
Просто нужно скрыть истинное содержимое строки, от посторонних глаз, а потом принять её и использовать как оригинальную строку.

Добавлено через 20 минут
Блин, совсем забыл... Вспомнил функцию base64_encode думаю что подойдет более чем... Если у кого есть более интересные варианты, то с удовольствием почитаю
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.02.2017, 08:03
Ответы с готовыми решениями:

В php закодировать строку, в js раскодировать
Как зашифровать в php строку "Привет мир" примерно вот в такой формат %D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82%20%D0%BC%D0%B8%D1%80 а...

Закодировать и раскодировать
Написать программу которая будет кодировать и раскодировать сообщение.Например:aaabbbb555 будет закодировано как 3a4b35 и раскодировано в...

Как раскодировать и закодировать обратно такой же код ?
Всем привет. Всё ни когда не сталкивался с этим, на столкнувшись завис. Пример кода: <script...

6
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
07.02.2017, 09:35
base_64 может расшифровать кто угодно. Используйте лучше такой класс, например:
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
class Crypter
{
    /**
     * Метод шифрования
     * 
     * @var string
     */
    protected $method;
    
    /**
     * Ключ шифрования
     * 
     * @var string
     */
    protected $key;
    
    public function __construct($key, $method = 'AES-256-CBC')
    {
        $this->key    = $key;
        $this->method = $method;
    }
    
    /**
     * Шифрование строки
     * 
     * @param $value string
     * 
     * @return string
     */
    public function encrypt($value)
    {
        $iv = random_bytes(16);
 
        $value = openssl_encrypt($value, $this->method, $this->key, 0, $iv);
        
        $json = json_encode([
            'iv'    => base64_encode($iv),
            'value' => $value
        ]);
 
        return base64_encode($json);
    }
    
    /**
     * Расшифровка строки
     * 
     * @param $value string
     * 
     * @return string
     */
    public function decrypt($value)
    {
        $data = json_decode(base64_decode($value), true);
        
        if (!$this->validOptions($data)) {
            throw new RuntimeException('Передана некорректная строка для расшифровки');
        }
 
        $iv = base64_decode($data['iv']);
        
        return openssl_decrypt($data['value'], $this->method, $this->key, 0, $iv);
    }
    
    /**
     * Проверка данных из шифрованной строки на корректность.
     * 
     * @param $value string
     * 
     * @return string
     */
    protected function validOptions($options)
    {
        if (!is_array($options)) {
            return false;
        }
        
        return isset($options['iv'], $options['value']);
    }
}
Когда надо зашифровать:
PHP
1
2
3
4
5
6
$crypter = new Crypter('секретный ключ');
 
$crypted = $crypter->encrypt('Строка для шифрования');
 
// В $crypted теперь содержится зашифрованная строка
echo $crypted;
Когда надо расшифровать:
PHP
1
2
3
4
5
6
7
$crypter = new Crypter('секретный ключ');
 
// Где $crypted -- ранее зашифрованная строка.
$string = $crypter->decrypt($crypted);
 
// В $string теперь содержится исходная строка
echo $string;
Только секретный ключ укажите понадёжней.
1
3 / 3 / 2
Регистрация: 16.01.2013
Сообщений: 471
07.02.2017, 09:46  [ТС]
Para bellum, Спасибо, я это делаю все для той же защиты от парсера, чтобы передать линк на картинку и её не было видно. Боюсь что такой скрипт может изрядно нагрузить сервер, ведь картинок может быть и 40 за раз...
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
07.02.2017, 10:10

Не по теме:

Цитата Сообщение от MirDj Посмотреть сообщение
я это делаю все для той же защиты от парсера
Я на логин что-то не обратил внимания. Оказывается, это Вы.


Цитата Сообщение от MirDj Посмотреть сообщение
Боюсь что такой скрипт может изрядно нагрузить сервер
Ну да, на то это и шифр.

Но шифр от парсинга не спасёт. Так как парсер получает данные, как и браузер. И если браузер может получить картинку -- то и парсер сможет.
0
3 / 3 / 2
Регистрация: 16.01.2013
Сообщений: 471
07.02.2017, 10:15  [ТС]
Para bellum, Я её просто передаю php скрипту. Она не будет видна как линк будет передана просто
PHP
1
$str  - /*путь до папки с файлом и его название*/ $code = base64_encode($str); <img src="/images/LoadImg.php?code='.$code.'" />
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
07.02.2017, 10:37
А, вот как. Тогда я не вижу необходимости использовать шифрование. Передавайте просто имя. Если закроете папку от прямого доступа -- можете не переживать, никто ничего не стащит.
Ещё лучше -- вынесите папку из public-каталога.
1
3 / 3 / 2
Регистрация: 16.01.2013
Сообщений: 471
07.02.2017, 10:43  [ТС]
Para bellum, Еще раз спасибо, по этому вопросу все понятно. Сейчас вернусь в ветку защиты от парсинга, есть вопросы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.02.2017, 10:43
Помогаю со студенческими работами здесь

. Каким образом можно закодировать byte[] в string и раскодировать обратно не повредив их?
Добрый день! Допустим имеется такой код: var file = System.IO.File.ReadAllBytes(openFileDialog1.FileName); ...

Раскодировать строку символов
Строка символов закодированный так, что буквы и числа идут парами (число показывает место буквы в тексте). Восстановить исходный текст. ...

Раскодировать строку RSA
Ребят, помогите с RSA. Суть такова: сначала получаю с сервера publicKey и privateKey, privateKey заношу в сессию, после чего в js...

Как раскодировать строку?
Здравствуйте. Хочу спарсить информацию с сайта myscore.ru, а именно получить матчи на завтра: CURL'ом я достаю такую строку: ...

Закодировать строку
Подскажите, пожалуйста, что не так в коде. Дана строка-предложение. Закодировать ее, т.е. указать сначала все символы, расположенные на...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru