Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> crypt пароля, как закриптовать пароль? 
V
    Опции темы
izek
Дата 28.1.2007, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


мозговой штурман
*


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

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



Мне нужно закриптовать пароль с помошью MD5 и как это сделать?помогите плиз! я знаю что там надо использовать crypt

Это сообщение отредактировал(а) izek - 28.1.2007, 14:03
PM MAIL ICQ   Вверх
JAPH
Дата 29.1.2007, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Причём тут crypt?
Код

use MD5;
print MD5->hexhash('parol');

PM MAIL ICQ   Вверх
izek
Дата 29.1.2007, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


мозговой штурман
*


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

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



а как в переменную загнать?
PM MAIL ICQ   Вверх
izek
Дата 29.1.2007, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


мозговой штурман
*


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

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



а всё понял!туплю сорри

Добавлено @ 21:07 
а обратно не как нельзя сконвертировать?

Это сообщение отредактировал(а) izek - 29.1.2007, 21:07
PM MAIL ICQ   Вверх
JAPH
Дата 29.1.2007, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В смысле обратно? По MD5 восстановить строку? Никак.
Этот алгоритм предназначен для одностороннего хеширования.
Изменение любого символа сильно влияет на хеш, а подобрать две строки с одинаковыми MD5-хешами очень сложно.
PM MAIL ICQ   Вверх
nitr
Дата 29.1.2007, 22:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



izek, нет smile сравнивай хеши smile
т.е. свой и с чем сравнить хочешь smile думаю для этого обратно хочешь ;) ?


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


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Если хочешь криптовать с последующим востановлением, юзай Crypt::CBC.

Вот пример из стандартной документации.
Код

#!/usr/bin/perl -w
use strict;
use Crypt::CBC;

my $password = "top_secret";

my $cbc = Crypt::CBC->new(
    -key => 'mykey',
    -cipher => 'Blowfish',
);

# Криптуем, сохраняем в переменную и выводим в STDOUT
my $secret_passwd = $cbc->encrypt($password);
print $secret_passwd."\n";

# Декодируем и выводим в STDOUT
print $cbc->decrypt($secret_passwd)."\n";


Это сообщение отредактировал(а) korob2001 - 30.1.2007, 11:03


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Materium
Дата 30.1.2007, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А вот это зачем и что делает можно вопрос:

Код

-key => 'mykey',
-cipher => 'Blowfish',

--------------------
#!sub abc {return "ok"}${&abc()}="TMTOWTDI";print "$ok";
PM MAIL   Вверх
Nab
Дата 30.1.2007, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Это передача именованных параметров конструктору объекта...



--------------------
 Чтобы правильно задать вопрос нужно знать больше половины ответа...
Perl Community 
FREESCO in Ukraine 
PM MAIL   Вверх
Materium
Дата 31.1.2007, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Nab, ну это я понимаю. ))) что из этого следует? зачем это? можно вместо "mykey" написать "keymy"??? Что должно стоять вместо этих именованых параметров?
почему просто нельзя:??

Код

my $cbc = Crypt::CBC->new();


извините конечно за тупой вопрос.
--------------------
#!sub abc {return "ok"}${&abc()}="TMTOWTDI";print "$ok";
PM MAIL   Вверх
sergejzr
Дата 31.1.2007, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Первое - ключ, втрое алгоритм.
Ключ нужен чтобы де/шифровать пароль. 
Алгоритм - потому что путей де/шифровки множество и надо всё таки выбрать один.

Чуть - чуть подумать и самому станет ясно smile


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Materium
Дата 31.1.2007, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



читать доку нужно. но тут бывает проще и быстрее. тебе что-то скажут, ты что-то скажешь и всё проблемы.
--------------------
#!sub abc {return "ok"}${&abc()}="TMTOWTDI";print "$ok";
PM MAIL   Вверх
korob2001
Дата 31.1.2007, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

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



Вот ещё нашёл на винте небольшой рабочий пример. Давно, как-то писал.
Код

#!C:/Perl/bin/Perl.exe
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
#    Author: Denis Korobov               #
#    E-mail: [email protected]         #
# Copyright: All rights fucked up. ;)    #
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#
use Digest::MD5;
use Crypt::CBC;
use Crypt::Blowfish;

my $self = {};
$self->{md5} = Digest::MD5->new();

print "X" x 79, "\n\n";
print win_to_dos("Привет! Вас приветствует программа шифрования данных.") . "\n";
print win_to_dos("Следуйте указаниям программы и будет вам счастье. ;))") . "\n\n";
print "X" x 79, "\n\n";
while ( 1 ) {
        print win_to_dos("Укажите путь к файлу с сообщением: ");
        chomp( $self->{file} = <STDIN> );
        if ( $self->{file} =~ /^\s*$/ ) {
             print win_to_dos("Ошибка: вы не указали путь к файлу.") . "\n";
        } elsif ( !-e $self->{file} ) {
             print win_to_dos("Ошибка: файл '" . $self->{file} . "' не существует.") . "\n";
        } else {
             last;
        }
}

print "x" x 79, "\n\n";
while ( 1 ) {
        print win_to_dos("Укажите действие:\ncrypt - шифровка\ndecrypt - расшифровка\n");
        chomp( $self->{action} = lc( <STDIN> ) );
        if ( $self->{action} !~ /^(?:de)?crypt$/i ) {
             print win_to_dos("Не верно задано действие.") . "\n";
        } else {
             last;
        }
}

print "x" x 79, "\n\n";
while ( 1 ) {
        print win_to_dos("Укажите ключ");
        print win_to_dos(" (можете оставить пустым, программа сделает это за вас)") if $self->{action} eq "crypt";;
        print ":\n";
        chomp($self->{key} = <STDIN>);
        if (($self->{action} eq "decrypt") and !$self->{key}) {
              print win_to_dos("Вы не указали ключ, вы можете это делать только для шифрования, но не обратного действия.") . "\n";
              next;
        } elsif (($self->{action} eq "crypt") and !$self->{key}) {
              $self->{key} = keyGenerator(10);
        }
        last;
}

$self->{cbc} = Crypt::CBC->new($self->{key}, "Blowfish");

$self->{filename} = (split(/\\|\/|\:/, $self->{file}))[-1];

open(R, "<" . $self->{file}) or die win_to_dos("Не удалось открыть файл для чтения: $!\n");
my @data = <R>;
close(R) or die win_to_dos("Не удалось закрыть файл: $!\n");
$self->{file} =~ s/$self->{filename}$/$self->{action} . "_" . $self->{filename}/e;

open(W, ">" . $self->{file}) or die win_to_dos("Не удалось открыть файл для записи: $!\n");
flock(W, 2);

if ( $self->{action} eq "crypt" ) {
     print W encoder(@data);
} else {
     print W decoder(@data);
}

close( W ) or die win_to_dos("Не удалось закрыть файл: $!\n");

print "=" x 79, "\n";
if ( $self->{action} eq "crypt" ) {
     print win_to_dos("Зашифрованное данные сохранены в файле '" . $self->{file} . "'.") . "\n";
     print win_to_dos("ВНИМАНИЕ! Для того, что бы человек смог прочесть зашифрованные данные,") . "\n";
     print win_to_dos("вы должны передать ему следующий ключь: " . $self->{key} . ".") . "\n";
     print win_to_dos("Иначе он не будет иметь возможности, прочесть ваше твоерение. ;)") . "\n";
} else {
     print win_to_dos("Дешифрованные данные, вы можете прочесть в файле: ") . "\n";
     print $self->{file}. "\n";
}
print "=" x 79, "\n\n";
print win_to_dos("Для выхода нажмите ENTER...");
<>;

sub encoder {
    my @val = @_;
    my $sum;
    $self->{md5}->add(join("", $self->{key}, @val));
    $sum = $self->{md5}->hexdigest();
    return($self->{cbc}->encrypt_hex(join("µ", $sum, @val)));
}

sub decoder {
    my $code = shift;
    my($sum, $sum2, @val) = ();
    ($sum, @val) = split("µ", $self->{cbc}->decrypt_hex($code));
    $self->{md5}->add(join("", $self->{key}, @val));
    $sum2 = $self->{md5}->hexdigest();
    return ($sum eq $sum2) ? @val : ();
}

sub keyGenerator {
    my $col   = shift || 10;
    my @chars = ('A'..'Z', 0..9);
    return join('', @chars[ map { rand @chars }( 1..$col ) ]);
}

sub win_to_dos {
    my $str = shift;
    $str =~ tr/\300-\377\250\227/\200-\257\340-\361/;
    return $str;
}

__END__;

Может кому пригодится.


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
Materium
Дата 31.1.2007, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ага, ну вот, теперь вовсе понятно что ключ - это набор символов (типа пароля) для раскодирования.
А Blowfish - один из алгоритмов кодирования\раскодирования.

Объяснять хорошо - это целая наука!  smile

Добавлено @ 19:40 
sergejzr ты объяснил как надо, это не к тебе относится а вообще. ;) 
--------------------
#!sub abc {return "ok"}${&abc()}="TMTOWTDI";print "$ok";
PM MAIL   Вверх
izek
Дата 2.3.2007, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


мозговой штурман
*


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

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



Пасибо!Тока заглянул  smile 
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




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


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

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