Каково самое безопасное шифрование “пароля” Python

Многопоточность возможна в php

Да, вы можете сделать многопоточность в PHP с pthreads

Из документации PHP :

pthreads - это объектно-ориентированный API, который предоставляет все инструменты, необходимые для многопоточности в PHP. Приложения PHP могут создавать, читать, писать, выполнять и синхронизировать с потоками, рабочими и потоковыми объектами.

Предупреждение : Расширение pthreads нельзя использовать в среде веб-сервера. Поэтому многопоточность в PHP должна оставаться только для приложений на основе CLI.

Простой тест

#!/usr/bin/php
arg = $arg;
    }

    public function run() {
        if ($this->arg) {
            $sleep = mt_rand(1, 10);
            printf('%s: %s  -start -sleeps %d' . "\n", date("g:i:sa"), $this->arg, $sleep);
            sleep($sleep);
            printf('%s: %s  -finish' . "\n", date("g:i:sa"), $this->arg);
        }
    }
}

// Create a array
$stack = array();

//Initiate Multiple Thread
foreach ( range("A", "D") as $i ) {
    $stack[] = new AsyncOperation($i);
}

// Start The Threads
foreach ( $stack as $t ) {
    $t->start();
}

?>

Первый запуск

12:00:06pm:     A  -start -sleeps 5
12:00:06pm:     B  -start -sleeps 3
12:00:06pm:     C  -start -sleeps 10
12:00:06pm:     D  -start -sleeps 2
12:00:08pm:     D  -finish
12:00:09pm:     B  -finish
12:00:11pm:     A  -finish
12:00:16pm:     C  -finish

Второй запуск

12:01:36pm:     A  -start -sleeps 6
12:01:36pm:     B  -start -sleeps 1
12:01:36pm:     C  -start -sleeps 2
12:01:36pm:     D  -start -sleeps 1
12:01:37pm:     B  -finish
12:01:37pm:     D  -finish
12:01:38pm:     C  -finish
12:01:42pm:     A  -finish

Реальный мир Пример

error_reporting(E_ALL);
class AsyncWebRequest extends Thread {
    public $url;
    public $data;

    public function __construct($url) {
        $this->url = $url;
    }

    public function run() {
        if (($url = $this->url)) {
            /*
             * If a large amount of data is being requested, you might want to
             * fsockopen and read using usleep in between reads
             */
            $this->data = file_get_contents($url);
        } else
            printf("Thread #%lu was not provided a URL\n", $this->getThreadId());
    }
}

$t = microtime(true);
$g = new AsyncWebRequest(sprintf("http://www.google.com/?q=%s", rand() * 10));
/* starting synchronization */
if ($g->start()) {
    printf("Request took %f seconds to start ", microtime(true) - $t);
    while ( $g->isRunning() ) {
        echo ".";
        usleep(100);
    }
    if ($g->join()) {
        printf(" and %f seconds to finish receiving %d bytes\n", microtime(true) - $t, strlen($g->data));
    } else
        printf(" and %f seconds to finish, request failed\n", microtime(true) - $t);
}

5
задан espenhogbakk 25 June 2009 в 12:52
поделиться

4 ответа

Если ваш сценарий может расшифровывать пароли, то и кто-то может взломать ваш сервер. Шифрование действительно полезно только тогда, когда кто-то вводит пароль для его разблокировки - если он остается разблокированным (или в сценарии есть пароль для его разблокировки), шифрование бессмысленно

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

Я бы не стал беспокоиться о том, чтобы пароли игры оставались простыми. текст. Если вас беспокоит их безопасность, исправьте, возможно, SQL-инъекции и т. Д., Убедитесь, что ваш веб-сервер и другое программное обеспечение обновлено и правильно настроено, и так далее.

Может быть, придумайте способ сделать кражу паролей менее привлекательной, чем собственно игру? Например, была игра (я не помню, что это была), в которой, если вы использовали чит для пропуска уровня, вы переходили на следующий уровень, но он не отмечал его как «завершенный», или вы могли пропустить уровень. но не получил ни одного балла. Или посмотрите на Project Euler, вы можете пройти любой уровень, но вы получите очки, только если введете ответ (и разработка ответа - это весь смысл игры, так что мошенничество побеждает ход игры)

Если вы действительно параноики, вы могли , возможно, использовать асимметричное шифрование, где вы в основном шифруете что-то с помощью ключа A , и вы можете читать это только с помощью ключа B ..

Я придумал аналогичную концепцию использования шифрования GPG (популярная асимметричная криптографическая система, в основном используемая для шифрования или подписи электронной почты) для защиты данных веб-сайтов . Я не совсем уверен, как это применимо к защите паролей игрового уровня, и, как я уже сказал, вам нужно быть действительно параноиком, чтобы даже подумать об этом ...

Короче говоря, я бы сказал, храните пароли в простом виде. -text и сконцентрируйте внимание на безопасности в другом месте (на самом коде веб-приложений)

5
ответ дан 13 December 2019 в 05:41
поделиться

The most secure encryption is no encryption. Passwords should be reduced to a hash. This is a one-way transformation, making the password (almost) unrecoverable.

When giving someone a code, you can do the following to be actually secure.

(1) generate some random string.

(2) give them the string.

(3) save the hash of the string you generated.

Once.

If they "forget" the code, you have to (1) be sure they're authorized to be given the code, then (2) do the process again (generate a new code, give it to them, save the hash.)

5
ответ дан 13 December 2019 в 05:41
поделиться

Если это веб-игра, разве вы не можете сохранить коды на стороне сервера и отправить их клиенту, когда он выполнит задачу? Какова архитектура вашей игры?

Что касается шифрования, может быть, попробовать что-нибудь вроде pyDes ?

2
ответ дан 13 December 2019 в 05:41
поделиться

Ваш вопрос не совсем ясен. Где вы хотите, чтобы произошло дешифрование? Так или иначе, открытый текст должен появиться на поверхности, поскольку вам нужно, чтобы игроки со временем узнали его.

Выберите шифр и покончите с ним.

0
ответ дан 13 December 2019 в 05:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: