|
|
|
| Ответ 003 на задачу N 5.
С условиями задачи можно ознакомится по ссылке.
<?
######### Решение задачи номер: 5 ###############
######### Студент: DDK ##########################
// Собираем массив с md5-хешами
$required[] = "fb28e9240e83a5264566de844cc45523";
$required[] = "437233c74e25fe505293cd2e8ecc2696";
$required[] = "06b2d4b91b5c9eaa8c20a1c270f95b3c";
$required[] = "e206a54e97690cce50cc872dd70ee896";
$required[] = "fbfa6902f089e5a0fa2424bd460ecfd0";
$basefile = "linux.words"; // Указываем имя файла с базой слов
$starttime = getmicrotime();
$words = file($basefile);
$words = str_replace(" ", "", $words); // Чистим массив от esc-последовательностей (linux only)
$words[] = ""; // На тот случай, если пароль empty, так сказать.
foreach($words as $thisword) {
for($i=0;$i<count($required);$i++) {
if(md5($thisword) == $required[$i]) {
$result[$i] = """.$thisword.""";
} elseif(md5(strtolower($thisword)) == $required[$i]) {
$result[$i] = """.strtolower($thisword)."" (оригинал: "".$thisword."")";
}
}
if(isset($result) AND count($result) == count($required)) {break;}
}
$worktime = getmicrotime() - $starttime;
foreach($required as $i => $hash) {
if(isset($result[$i])) {
echo $required[$i]." => <b>".$result[$i]."</b><br>";
} else {
echo $required[$i]." => <b><font color='Red'>Не расшифровано</font></b><br>";
}
}
echo "<br>Скрипт выполнен за: <b>".$worktime."</b> сек.";
// Эту функцию свиснул из чьего-то ответа на 4-ю задачу, да простит меня автор :)
function getmicrotime() {
list($usec, $sec) = explode(' ', microtime());
return ((float)$usec+(float)$sec);
}
?>
|
Результат:
fb28e9240e83a5264566de844cc45523 => "subprogram"
437233c74e25fe505293cd2e8ecc2696 => "pyramid"
06b2d4b91b5c9eaa8c20a1c270f95b3c => "cluster"
e206a54e97690cce50cc872dd70ee896 => "linux" (оригинал: "Linux")
fbfa6902f089e5a0fa2424bd460ecfd0 => "lisbon" (оригинал: "Lisbon")
Скрипт выполнен за: 4.20715522766 сек.
|
http://www.softtime.ru/info/task.php?id_article=75 | |
|
|
|
|
|
|
|
для: SoftTime
(09.02.2006 в 15:57)
| | Ориентироваться нужно на
<?
######### Решение задачи номер: 5 ###############
######### Студент: DDK ##########################
// Собираем массив с md5-хешами
$required[] = "fb28e9240e83a5264566de844cc45523";
$required[] = "437233c74e25fe505293cd2e8ecc2696";
$required[] = "06b2d4b91b5c9eaa8c20a1c270f95b3c";
$required[] = "e206a54e97690cce50cc872dd70ee896";
$required[] = "fbfa6902f089e5a0fa2424bd460ecfd0";
$basefile = "linux.words"; // Указываем имя файла с базой слов
$starttime = getmicrotime();
$words = file($basefile);
$words = str_replace("\n", "", $words); // Чистим массив от esc-последовательностей (linux only)
$words[] = ""; // На тот случай, если пароль empty, так сказать.
foreach($words as $thisword) {
for($i=0;$i<count($required);$i++) {
if(md5($thisword) == $required[$i]) {
$result[$i] = "\"".$thisword."\"";
} elseif(md5(strtolower($thisword)) == $required[$i]) {
$result[$i] = "\"".strtolower($thisword)."\" (оригинал: \"".$thisword."\")";
}
}
if(isset($result) AND count($result) == count($required)) {break;}
}
$worktime = getmicrotime() - $starttime;
foreach($required as $i => $hash) {
if(isset($result[$i])) {
echo $required[$i]." => <b>".$result[$i]."</b><br>";
} else {
echo $required[$i]." => <b><font color='Red'>Не расшифровано</font></b><br>";
}
}
echo "<br>Скрипт выполнен за: <b>".$worktime."</b> сек.";
// Эту функцию свиснул из чьего-то ответа на 4-ю задачу, да простит меня автор :)
function getmicrotime() {
list($usec, $sec) = explode(' ', microtime());
return ((float)$usec+(float)$sec);
}
?>
|
Не могу избавится от уничтожения кавычек - какой-то хитрый режим на сервер включён, на локальной машине всё нормально - тут пропадают слеши. | |
|
|
|
|
|
|
|
для: cheops
(12.02.2006 в 23:54)
| | Не сказал бы, что код очень читабельный и что из него выжили всё что можно... Вот смотрите
<?php
foreach($words as $thisword) {
for($i=0;$i<count($required);$i++) {
?>
|
У вас каждый раз вычисляется функция count($required), по числу слов в словаре, а потом ещё для каждого слова 5 раз вычисляется md5($thisword), хотя функция достаточно ресурсоёмкая и даже когда пароль вычислен - он продолжает вычисляться при других проходах. | |
|
|
|