Как использовать обмен ключами Диффи-Хеллмана для защиты передачи данных между клиентом и сервером?

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

Проблема в том, что я не знаю, как использовать эти номера для защиты передачи информации. Я хотел бы передавать «строки» по соединению между клиентом и сервером, а не целые числа. Чем мне могут быть полезны эти цифры? Я приближаюсь к крайнему сроку для этого проекта для курса, который я беру, и мне действительно нужна помощь.


person pardis    schedule 25.01.2013    source источник
comment
Я предлагаю вам взглянуть на bouncycastle.org/java.html   -  person Miquel    schedule 26.01.2013
comment
Посмотрите на класс Java KeyAgreement.   -  person President James K. Polk    schedule 26.01.2013


Ответы (1)


Я бы посоветовал прочитать и понять это: http://en.wikipedia.org/wiki/Diffie%E2%80%93Hellman_key_exchange

И вот фрагмент кода PHP, который поможет...

GENERATOR=2 и PRIME (300-значное простое число) являются константами.

        // generate server secret
        $privateKey = 0;

        for ($i=0; $i<100; $i++) {
            if ($i==0) {
                $privateKey = mt_rand(1, 9);
            } else {
                $privateKey .= mt_rand(0, 9);
            }
        }

        // output server public key
        echo gmp_strval(gmp_powm(GENERATOR, $privateKey, PRIME));

        // calculate server secret key
        $secretKey = md5(
            gmp_strval(
                gmp_powm($_POST['public_key'], $privateKey, PRIME)
            )
        );
person Andy Davies    schedule 25.01.2013
comment
У меня есть проект, в котором я должен реализовать обмен ключами Диффи-Хеллмана в программе чата... я должен использовать обмен ключами всякий раз, когда клиент взаимодействует с сервером или клиент взаимодействует с другим клиентом... На самом деле я действительно не не знаю точный код для использования в программе .. я только что нашел его в Интернете.... - person pardis; 26.01.2013