Модераторы: Aliance, skyboy, MoLeX, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Шифрование / Дешифрование 
:(
    Опции темы
wsr
Дата 5.3.2006, 09:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fuzzy Logic
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 3.7.2005

Репутация: нет
Всего: 2



Привет всем.
Сделал для себя некое подобие хранилища данных. Так вот, мне нужно, что бы эти данные шифровались, и что бы зная пароль, я мог пы прочитать их!
Пробовал стандартные методы которые прокатывают в Делфи, а в ПХП не прет чтот ( прогнать через xor ).
Так вот помогите мне решить эту проблемку.

Вкратце :
Есть текст, есть пароль.
Нужно закодировать текст используя пароль.
Раскодировать тоже используя пароль!
--------------------
 ICQ : 918-318Сайт : Lock-Team 
PM MAIL WWW ICQ   Вверх
AntonioBanderaz
Дата 5.3.2006, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 18



ээээ .... тут вот я рядом совсем писал и топик там есть....
Код

function my_encrypt($string, $key) {
    $enc = '';
    for($i = 0;$i < strlen($string);$i++) {
        $var = bin2hex($string[$i] XOR $key);
        if(strlen($var) < 2) $var = '0'.$var;
        $enc .= ($var);
    }    
    return $enc;
}
    
function my_decrypt($encrypt_string, $key) {
    $dec = '';
    $arr = explode("\n",wordwrap($encrypt_string,2,"\n",1));
    for($i = 0; $i < count($arr);$i++) {
        $dec .= chr(hexdec($arr[$i])) XOR $key;
    }
    return $dec;
}


Но проще использовать base64 с ключём.... или подключать модуль mcrypt.o или mcrypt.dll из настроек и разоваться blowfish )))


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
wsr
Дата 5.3.2006, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fuzzy Logic
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 3.7.2005

Репутация: нет
Всего: 2



Сенькс.
Расскажи плизз как base64_encode использовать с ключем?
--------------------
 ICQ : 918-318Сайт : Lock-Team 
PM MAIL WWW ICQ   Вверх
Ciber SLasH
Дата 5.3.2006, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: нет
Всего: 67



Можно заюзать библиотеку MCrypt.
php_mcrypt.dll — подключаем в php.ini, libmcrypt.dll — скачивается и ложится в папку "php/".
Ссылка на либу: http://ftp.emini.dk/pub/php/win32/mcrypt/

Пример:
index.htm:
Код

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content='text/html; charset=windows-1251'>
<meta name="Generator" content='EditPlus 2.21.330'>
<meta name="Author" content='Ciber SLasH'>
<title>PHP :: Шифровщик</title>
<script type='text/javascript'>

</script>
<style type='text/css'>
html, body {width: 98%}
h2 {color: navy; font-family: Arial, Helvetica, Verdana, sans-serif}
</style>
</head>

<body>
<div align="center" style='width: 100%'>
    <div align="center" style='width: 70%'>
    <h2>Авторизация</h2>
    <form method="POST" action="decrypt.php">
    Login: <input type="text" name="login"> Password: <input type="password" name="pass">
    <p><input type="submit" value="submit"></p>
    </form>
    </div>
</div>
</body>
</html>

encrypt.php:
Код

<?php
$text = $_POST['text'];
if (!empty($text)) {
    // md5('admin:pass') => 'df4414154fd956eac41e643671d7cdde'
    $key = 'df4414154fd956eac41e643671d7cdde';
    // Создание вектора начального состояния для шифрования
    $iv = mcrypt_create_iv( mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND );
    $crypt_text = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, htmlspecialchars($text), MCRYPT_MODE_ECB, $iv);
    $fp = fopen('./crypt.txt', 'w');
    fwrite($fp, $crypt_text);
    fclose($fp);
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content='text/html; charset=windows-1251'>
<meta name="Generator" content='EditPlus 2.21.330'>
<meta name="Author" content='Ciber SLasH'>
<title>PHP :: Шифровщик</title>
<?php
//-- PHP: begin ----------------------------------------------------------------
if (!empty($text)) {
$js = <<< EOD
<script type='text/javascript'>
onload = function () {
var fm = document.forms[0];
    fm.childNodes[0].innerHTML = "Зашифрованный текст:";
    fm.elements[0].value = 
EOD;
$js .= "'".addslashes($crypt_text)."'\r\n}\r\n</script>\r\n";
echo $js;
}
//-- PHP: end ------------------------------------------------------------------
?>
<style type='text/css'>
html, body {width: 98%}
h2 {color: red; font-family: Arial, Helvetica, Verdana, sans-serif}
</style>
</head>

<body>
<div align="center" style='width: 100%'>
    <div align="center" style='width: 70%'>
    <h2>Шифровщик</h2>
    <form method="POST">
    <div align="left">Текст для зашивровки:</div>
    <textarea name="text" rows="10" style='width: 100%'></textarea>
    <p><input type="submit" value="submit"></p>
    </form>
    </div>
</div>
</body>
</html>

decrypt.php:
Код

<?php
$login = $_POST['login'];
$pass = $_POST['pass'];
if (!empty($login) && !empty($pass)) {
    $crypt_text = file_get_contents('./crypt.txt');
    // Создание вектора начального состояния для шифрования
    $iv = mcrypt_create_iv( mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND );
    // Расшифровываем текст
    $text = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($login.':'.$pass), $crypt_text, MCRYPT_MODE_ECB, $iv);
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content='text/html; charset=windows-1251'>
<meta name="Generator" content='EditPlus 2.21.330'>
<meta name="Author" content='Ciber SLasH'>
<title>PHP :: Расшифровщик</title>
<style type='text/css'>
html, body {width: 98%}
h2 {color: green; font-family: Arial, Helvetica, Verdana, sans-serif}
</style>
</head>

<body>
<div align="center" style='width: 100%'>
    <div align="center" style='width: 70%'>
    <h2>Расшифровщик</h2>
    <div align="left">Расшифрованный текст:</div>
    <textarea rows="10" style='width: 100%'><?php echo $text;?></textarea>
    </div>
</div>
</body>
</html>

Сначала запускается файл encrypt.php и в поле вводится произвольный текст для зашифровки.
Затем загружаем index.htm и если вводим правильный login и password, то успешно расшифровываем, иначе — болт.
Login: admin
Password: pass
Добавлено @ 12:08
Пока сделал, уже отписались smile
PM   Вверх
-=Ustas=-
Дата 6.3.2006, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 6
Всего: 69



AntonioBanderaz, я что-то не понял, каким образом твои функции работают... Т.е. у меня не получается закодировать данные. Кодируется всё в нули. smile


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
CyClon
Дата 7.3.2006, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 1
Всего: 4



-=Ustas=-, Библиотека какая-то должна подключатся вроде бы...


--------------------
user posted image
PM   Вверх
-=Ustas=-
Дата 7.3.2006, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 6
Всего: 69



CyClon, для тех функций не надо библиотек. Но все же не работает ))


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
CyClon
Дата 7.3.2006, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 838
Регистрация: 3.12.2005

Репутация: 1
Всего: 4



-=Ustas=-, mcrypt_create_iv, mcrypt_decrypt и так далее. Что-то я не вижу, чтобы эти функции были объявлены, но они используются.


--------------------
user posted image
PM   Вверх
Ciber SLasH
Дата 8.3.2006, 04:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1813
Регистрация: 9.11.2004
Где: С.-Петербург

Репутация: нет
Всего: 67



Цитата(-=Ustas=- @ 6.3.2006, 17:51 Найти цитируемый пост)
AntonioBanderaz, я что-то не понял, каким образом твои функции работают... Т.е. у меня не получается закодировать данные. Кодируется всё в нули. smile

Всё потому, что XOR — это логическая операция, а бинарный эквивалент её — символ ^
Т.е.:
Код

<?php
function my_encrypt($string, $key) {
$enc = '';
    for ($i = 0; $i < strlen($string); $i++) {
        $var = bin2hex($string[$i] ^ $key);
        if (strlen($var) < 2) $var = '0'.$var;
        $enc .= $var;
    }
return $enc;
}

function my_decrypt($encrypt_string, $key) {
$dec = '';
    $arr = explode("\n", wordwrap($encrypt_string, 2, "\n", 1));
    for ($i = 0; $i < count($arr); $i++) {
        $dec .= chr(hexdec($arr[$i])) ^ $key;
    }
return $dec;
}
// md5('admin:pass') => 'df4414154fd956eac41e643671d7cdde'
$key = 'df4414154fd956eac41e643671d7cdde';
echo 'bla-bla-bla -> '.my_encrypt('bla-bla-bla', $key).' -> ';    // 0608054906080549060805
echo my_decrypt('0608054906080549060805', $key);
?>

PM   Вверх
wsr
Дата 8.3.2006, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Fuzzy Logic
*


Профиль
Группа: Участник
Сообщений: 142
Регистрация: 3.7.2005

Репутация: нет
Всего: 2



на просторах Интернета нашел следующий код, который меня очень порадовал.
Именно то, что я хотел, и без использлвания сторонних библиотек
Код

class ENCRYPT
{

    // Алфавит для кодирования/декодирования
    var $ralphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzАБВГДЕЁЖЗИЙКЛМНОПРСТУФХСЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя1234567890 \\!,.:;?~@#\$%^&*()_+-=][}{/><\"'`|";

    // Функция кодирования строки
    function encrypt ( $strtoencrypt, $password )
    {

        $alphabet = $this->ralphabet . $this->ralphabet;

        $strtoencrypt = str_replace( "\t", "[tab]", $strtoencrypt);
        $strtoencrypt = str_replace( "\n", "[new]", $strtoencrypt);
        $strtoencrypt = str_replace( "\r", "[ret]", $strtoencrypt);

        for( $i=0; $i < strlen ( $password ); $i++ )
        {

            $cur_pswd_ltr = substr($password,$i,1);
            $pos_alpha_ary[] = substr(strstr($alphabet,$cur_pswd_ltr),0,strlen($this->ralphabet));
        
        }#for

        $i  = 0;
        $n  = 0;
        $nn = strlen ( $password );
        $c  = strlen ( $strtoencrypt );

        $encrypted_string = '';

        while ( $i < $c )
        {

            $encrypted_string .= substr ( $pos_alpha_ary[$n], strpos ( $this->ralphabet, substr($strtoencrypt, $i, 1 ) ), 1 );
            $n++;

            if ( $n == $nn )
            {
                
                $n = 0;

            }#if
            $i++;

        }#while

        return $encrypted_string;

    }#function

    // Функция декодирования строки
    function decrypt ( $strtodecrypt, $password )
    {

        $alphabet = $this->ralphabet . $this->ralphabet;
        for ( $i=0; $i < strlen ( $password ); $i++ )
        {

            $cur_pswd_ltr = substr ( $password, $i, 1 );
            $pos_alpha_ary[] = substr ( strstr ( $alphabet, $cur_pswd_ltr), 0, strlen ( $this->ralphabet ) );

        }#for

        $i  = 0;
        $n  = 0;
        $nn = strlen ( $password );
        $c  = strlen ( $strtodecrypt );

        $decrypted_string = '';

        while ( $i < $c )
        {

            $decrypted_string .= substr ( $this->ralphabet, strpos ( $pos_alpha_ary[$n], substr ( $strtodecrypt, $i, 1) ), 1);

            $n++;
            if ( $n == $nn )
            {

                $n = 0;

            }#if
            $i++;

        }#while

        $decrypted_string = str_replace("[tab]","\t", $decrypted_string);
        $decrypted_string = str_replace("[new]","\n", $decrypted_string);
        $decrypted_string = str_replace("[ret]","\r", $decrypted_string);

        return $decrypted_string;

    }#function

}#class


Код уже переработан мной, для более простого использования.
Единственный минус, так это если в строке var $ralphabet указаны не все символы для кодирования, то можем получить небольшие глюки при декодировании.
А так в общем код прикольный!
--------------------
 ICQ : 918-318Сайт : Lock-Team 
PM MAIL WWW ICQ   Вверх
AntonioBanderaz
Дата 12.3.2006, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Velichko Anton
**


Профиль
Группа: Участник
Сообщений: 851
Регистрация: 28.4.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 18



Цитата(Ciber SLasH @ 8.3.2006, 04:03 Найти цитируемый пост)
Всё потому, что XOR — это логическая операция, а бинарный эквивалент её — символ ^

Э блин это я что-то ступил ))) Спасибо... просто наспех добавил XOR а так у меня было тоже самое только без ключа, мне просто не надо было... ))))


--------------------
ГЫ... 
PM MAIL ICQ   Вверх
dipsy
Дата 22.1.2007, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 283
Регистрация: 13.1.2005
Где: Нижний Новгород

Репутация: нет
Всего: нет



Цитата(wsr @  8.3.2006,  10:20 Найти цитируемый пост)
Код

class ENCRYPT
{
    // Алфавит для кодирования/декодирования
    var $ralphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzАБВГДЕЁЖЗИЙКЛМНОПРСТУФХСЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя1234567890 \\!,.:;?~@#\$%^&*()_+-=][}{/><\"'`|";
...
...

...

Пробую использовать этот скрипт - в результате при разных значениях ключа неправильно восстанавливаются разные буквы; пробовал добавить в алфавит символы \t\r\n, результат тот же.

после того, как убрал "\\" из алфавита, то вроде стало работать нормально. Но почему тогда \" и \$ не мешают ?

Может это быть связано с тем, что работаю под Windows ?

PM MAIL WWW   Вверх
Mal Hack
Дата 22.1.2007, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 16
Всего: 261



Это связано, скорее всего с magic_quotes_runtime или где-ть преобразовываешь  не так, как надо.
PM ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.1182 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.