Кодирование и декодирование

Я хочу закодировать некоторый текст, который может быть длиной 1 или 10 000 или бесконечным, и декодировать (обратный алгоритм).

Я ищу что-то вроде MD5 на PHP, но обратимо, так как MD5 - это один из способов.

Это может быть серверная часть или JavaScript. Если оба, то еще лучше.


person Val    schedule 29.01.2010    source источник
comment
Какова цель кодирования и декодирования текста? Вы хотите зашифровать его для безопасности, вы хотите сжать его или у вас есть другая причина?   -  person Scharrels    schedule 29.01.2010
comment
компресс был бы вашим ответом :)   -  person Val    schedule 29.01.2010
comment
md5 Five — это один из способов, потому что это хэш-алгоритм. То, что вы ищете, — это алгоритм шифрования, такой как DES или Triple DES Edit: если вам нужно сжатие, выберите GZip.   -  person Vivek Bernard    schedule 29.01.2010
comment
gzip сожмет его как файл или вернет строку, содержащую ключ для распаковки?   -  person Val    schedule 29.01.2010


Ответы (3)


Для сжатия

В Javascript http://rumkin.com/tools/compression/compress_huff.php

Также взгляните на сжатие/распаковку текста javascript

Для шифрования

В PHP вы можете использовать mcrypt:

http://www.php.net/manual/en/function.mcrypt-encrypt.php

http://www.php.net/manual/en/function.mcrypt-decrypt.php

Пример кода (с сайта выше):

<?php
class Cipher {
    private $securekey, $iv;
    function __construct($textkey) {
        $this->securekey = hash('sha256',$textkey,TRUE);
        $this->iv = mcrypt_create_iv(32);
    }
    function encrypt($input) {
        return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $this->securekey, $input, MCRYPT_MODE_ECB, $this->iv));
    }
    function decrypt($input) {
        return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $this->securekey, base64_decode($input), MCRYPT_MODE_ECB, $this->iv));
    }
}

$cipher = new Cipher('secret passphrase');

$encryptedtext = $cipher->encrypt("hide me");
echo "->encrypt = $encryptedtext<br />";

$decryptedtext = $cipher->decrypt($encryptedtext);
echo "->decrypt = $decryptedtext<br />";

var_dump($cipher);
?> 
person Alec Smart    schedule 29.01.2010
comment
ОП пояснил, что ему нужно не шифрование, а сжатие. - person Joey; 29.01.2010
comment
Ой. Вопрос полностью изменился. - person Alec Smart; 29.01.2010
comment
извините, приятель, но это сжатие довольно глупо, если в строке, которую нужно зашифровать, 3050 символов, вы получите 5000+ символов, поэтому оно не уменьшает его размер ... на самом деле, оно увеличивает его. - person Val; 29.01.2010

Если вы хотите сжать строку, см. этот вопрос для получения информации о реализации LZW в JavaScript, Хаффман, LZ77 и другие. Я почти уверен, что в PHP есть подобные библиотеки.

person Anton Gogolev    schedule 29.01.2010