PHP короткое шифрование - PullRequest
       3

PHP короткое шифрование

3 голосов
/ 27 февраля 2012

Я использую этот код:

$url = "http://www.webtoolkit.info/javascript-base64.html";
print base64_encode($url);

Но результат очень длинный: "aHR0cDovL3d3dy53ZWJ0b29sa2l0LmluZm8vamF2YXNjcmlwdC1iYXNlNjQuaHRtbA =="

Есть ли способ преобразовать длинную строку в короткое шифрование и иметь возможность преобразовать?

например:

new_encrypt("http://www.webtoolkit.info/javascript-base64.html")
Result: "431ASDFafk2"

Ответы [ 6 ]

3 голосов
/ 27 февраля 2012

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

Кодирование Base 64 предназначено для преобразования данных шириной 8 бит в формат, который можно отправлять по каналу связи, использующему 6 или 7 бит, без потери данных.Поскольку 6 битов меньше 8 битов, закодированная строка, очевидно, будет длиннее оригинальной.

1 голос
/ 27 февраля 2012

Этот вопрос может иметь то, что вы ищете: Эффективный алгоритм сжатия для коротких текстовых строк

Здесь на самом деле ссылки: http://github.com/antirez/smaz/tree/master

Я не проверял, просто нашел ссылки.

0 голосов
/ 29 сентября 2016

Вы можете проявить творческий подход и просто сделать некоторые «вещи», чтобы зашифровать URL-адрес, чтобы его было нелегко задавать, но можно кодировать / декодировать.

как обратные строки ...
или иметьслучайные 3 буквы, ваша строка закодирована с base64 или просто заменить буквы на цифры или цифры на буквы, а затем еще 3 случайные буквы ... как только вы знаете рецепт, вы можете сделать и отменить его.

    $keychars = "abcdefghijklmnopqrstuvwxyz0123456789";
    $length = 2;
    $randkey = "";
    $randkey2 = "";
    for ($i=0;$i<$length;$i++)  $randkey .= substr($keychars, rand(1, strlen($keychars) ), 1);
0 голосов
/ 27 февраля 2012

Ну ... вы можете попробовать использовать md5() или uniqid().

Первый генерирует хэш md5 вашей строки.

md5("http://www.webtoolkit.info/javascript-base64.html");

http://php.net/manual/en/function.md5.php

Второй генерирует 13 уникальных идентификаторов, а затем вы можете создать связь между вашей строкой и этим идентификатором.

http://php.net/manual/en/function.uniqid.php

P.S. Я не уверен, чего вы хотите достичь, но эти решения, вероятно, вас удовлетворит.

0 голосов
/ 27 февраля 2012

Существует множество различных алгоритмов шифрования / дешифрования.Вы можете взглянуть на следующую документацию: http://www.php.net/manual/en/function.mcrypt-list-algorithms.php (здесь используется mcrypt с разными алгоритмами).

... НО, вы не можете заставить что-то быть действительно маленьким (зависит отРазмер, который вы хотите).Зашифрованная строка должна иметь всю доступную информацию, чтобы иметь возможность ее расшифровать.В любом случае, base64-строка не такая длинная (по сравнению, например, с действительно безопасными хешами с солью).

Я не вижу проблемы.

0 голосов
/ 27 февраля 2012

Во-первых, base64 - это стандарт кодирования, и он не предназначен для шифрования данных, поэтому не используйте его.Причина, по которой ваши данные намного длиннее, состоит в том, что для каждых 6 битов во входной строке base64 будет выводить 8 битов.

Не существует способа шифрования, который напрямую выводил бы укороченную строку.В лучшем случае результат будет таким же длинным.

Решением этой проблемы было бы сжать вашу строку и затем зашифровать ее, но с вашим URL добавленные данные для формата zip по-прежнему будут создаватьваш выходной сигнал длиннее входного.

...