Возможно вы искали: 'Cruise Ship Tycoon'

May 15 2025 19:06:59
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » Шифрование данных в Perl программах (crypt perl howto)

Шифрование данных в Perl программах (crypt perl howto)

Ключевые слова: crypt, perl, howto, (найти похожие документы)

Date: Tue, 03 Dec 2002 21:32:26 +0500
From: Andrey Sapozhnikov <sapa@icb.chel.su>
Newsgroups: ftn.ru.cgi.perl
Subject: Шифрование данных в Perl программах

> Короче берешь на случайное число умножаешь и в следющем действии юзера
> делишь. или сдвигаешь на байт влево или вправо.

Криптостойкость подобного "шифра" в общем случае будет
чрезвычайно низка. Достаточно отметить, не проводя
дополнительного анализа стойкости, что данный "шифр"
абсолютно не отвечает принципу Кирхгофа. А
последовательность арифметических операций умножения
и деления вообще бессмысленна по той причине, что
(x * k1) / k2 = x * (k1 / k2), где константное
значение k1/k2 и будет являться ключом данного "шифра".
Я бы хотел отметить, что создание новых стойких
алгоритмов шифрования исключительно сложный процесс,
требующий большого объема математичиских доказательств
и если только Вы не специалист в области криптографии,
то заниматься подобным не только бесполезно, но и
вредно в силу создания иллюзий защищенности системы.
Лучше воспользоваться готовыми проверенными алгоритмами
криптования, хотя для того, чтоб их грамотно применить
вме равно нужны базовые знания в области криптографии.
Применительно к Perl я рекомендовал бы использовать

Crypt::Rijndael (Rijndael cipher, now AES)
Crypt::Rijndael_PP (pure-perl implementation)
Crypt::GOST (ГОСТ 28147-89)
Crypt::GOST_PP (pure-perl implementation)
Crypt::Twofish2
Crypt::IDEA

в большинстве случаев вместе с модулем

Crypt::CBC

и в качестве асиммметричных алгоритмов:

Crypt::DSA
Crypt::RSA

впрочем, для данной задачи они не нужны.

Приблизительная схема использования шифрования в данной
задаче (упрощенно-схематически):

1. Создание криптованного сообщения самому себе.

use Crypt::CBC;

my $plaintext = (time() + 180) . "&$param1&$param2";
my $cipher = Crypt::CBC->new( {
'key' => 't0p $eKreT |<eY',
'cipher' => 'Rijndael'
} );

my $ciphertext = $cipher->encrypt_hex($plaintext);

print "window.open('my_perl_script.cgi?p=$ciphertext', ",
"'mywin', 'height=200, width=300');n";

2. Получение сообщения, декриптование, проверка валидности.

use CGI;
use Crypt::CBC;
use MIME::Base64;

my $ciphertext = param('p') or
die "mandatory parameter not passed";

my $cipher = Crypt::CBC->new( {
'key' => 't0p $eKreT |<eY',
'cipher' => 'Rijndael'
} );

my $plaintext = $cipher->decrypt_hex($ciphertext) or
die "decryption failed";

$plaintext =~ /^(d+)&(w+)&(w+)$/ or
die "validation failedn";

time() <= $1 or die "parameter expired";

my ($param1, $param2) = ($2, $3);


В данном случае модуль Crypt::CBC решает за нас
несколько задач - дополнение ключа и данных до
размера блока требуемого данному алгоритму
криптования, генерацию случайного IV (начального
вектора), криптование и упаковку результата
в строку.


From: Andrey Sapozhnikov <sapa@icb.chel.su>

> У них в сишной-то реализации ассемблерными вставками народ развлекается, а ты
> pure perl хочешь... Они ж с открытым ключом, они тяжелые по определению.

IDEA и Twofish - это симметричные алгоритмы (т.е. с закрытым ключом).

Кстати, я тут проделал небольшой сравнительный бенчмарк сайферов.
Сайферы которые не умеют работать с Crypt::CBC - выбросил, за
исключением GOST_PP - его поправить оказалось проще простого
(причем не изменяя сам модуль).

Benchmark: running Blowfish, Blowfish_PP, CAST5, CAST5_PP, DES, DES_EDE3,
DES_PP, GOST, GOST_PP, IDEA, Rijndael, Rijndael_PP, Serpent, TEA, Twofish,
Twofish2 for at least 5 CPU seconds...
Blowfish: 5 wallclock secs ( 5.33 usr + 0.00 sys = 5.33 CPU) @ 1201.69/s
(n=6405)
Blowfish_PP: 6 wallclock secs ( 5.08 usr + 0.00 sys = 5.08 CPU) @ 6.69/s
(n=34)
CAST5: 6 wallclock secs ( 5.26 usr + 0.00 sys = 5.26 CPU) @ 1459.89/s
(n=7679)
CAST5_PP: 5 wallclock secs ( 5.08 usr + 0.12 sys = 5.20 CPU) @ 124.23/s
(n=646)
DES: 6 wallclock secs ( 5.31 usr + 0.00 sys = 5.31 CPU) @ 1391.53/s
(n=7389)
DES_EDE3: 5 wallclock secs ( 5.30 usr + 0.01 sys = 5.31 CPU) @ 1076.84/s
(n=5718)
DES_PP: 6 wallclock secs ( 5.10 usr + 0.02 sys = 5.12 CPU) @ 549.80/s
(n=2815)
GOST: 5 wallclock secs ( 5.15 usr + 0.01 sys = 5.16 CPU) @ 1365.31/s
(n=7045)
GOST_PP: 7 wallclock secs ( 4.57 usr + 0.70 sys = 5.27 CPU) @ 135.10/s
(n=712)
IDEA: 5 wallclock secs ( 5.23 usr + 0.01 sys = 5.24 CPU) @ 1383.97/s
(n=7252)
Rijndael: 6 wallclock secs ( 5.34 usr + 0.00 sys = 5.34 CPU) @ 1362.73/s
(n=7277)
Rijndael_PP: 5 wallclock secs ( 5.25 usr + 0.06 sys = 5.31 CPU) @ 54.80/s
(n=291)
Serpent: 5 wallclock secs ( 5.26 usr + 0.02 sys = 5.28 CPU) @ 1235.42/s
(n=6523)
TEA: 6 wallclock secs ( 5.25 usr + 0.00 sys = 5.25 CPU) @ 1332.00/s
(n=6993)
Twofish: 5 wallclock secs ( 5.29 usr + 0.00 sys = 5.29 CPU) @ 1258.22/s
(n=6656)
Twofish2: 6 wallclock secs ( 5.30 usr + 0.00 sys = 5.30 CPU) @ 1303.21/s
(n=6907)

Вот код замерялки:
---------------------------------------------------------------------
#!/usr/bin/perl -w
use strict;
use Crypt::CBC;
use Benchmark;

sub Crypt::GOST_PP::keysize { 32 }
sub Crypt::GOST_PP::blocksize { 8 }

my @ciphers = qw(
Blowfish Blowfish_PP
GOST GOST_PP
CAST5 CAST5_PP
DES_EDE3
DES DES_PP
Rijndael Rijndael_PP
Serpent Twofish Twofish2
IDEA TEA
);

my %dotest;

foreach (@ciphers) {
my $cipher = "Crypt::$_";

$dotest{$_} = sub {
my $c = Crypt::CBC->new( {
'key' => '12341234',
'cipher' => "$cipher"
} );
$c->decrypt($c->encrypt('test line')) eq 'test line' or
die "cipher error";
};
}

timethese -5, %dotest;
------------------------------ EOF ---------------------------

Самым быстрым из pure-perl оказался DES_PP. Из сайферов с
большим размером ключа наиболее быстрые GOST_PP и CAST5_PP.
Blowfish_PP - в пролете, скорость черепашья. А вот Rijndael_PP
вполне себе неплох, хотя вдвое медленнее CAST5_PP. C-шные
реализации показали близкую скорость, очевидно решающим
фактором тут уже становится Crypt::CBC. Отказ от регенерации
ключа в Crypt::CBC не приводит к заметному ускорению -
Digest::MD5 чрезвычайно быстр. Hа моей машине (P4 1.7GHz) он
показывает 307235.08/s.
1599 Прочтений •  [Шифрование данных в Perl программах (crypt perl howto)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Шифрование данных в Perl программах... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка