You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.8 KiB
PHTML
77 lines
2.8 KiB
PHTML
5 years ago
|
<?php
|
||
|
/**********************************************************\
|
||
|
| |
|
||
|
| The implementation of PHPRPC Protocol 3.0 |
|
||
|
| |
|
||
|
| dhparams.php |
|
||
|
| |
|
||
|
| Release 3.0.1 |
|
||
|
| Copyright by Team-PHPRPC |
|
||
|
| |
|
||
|
| WebSite: http://www.phprpc.org/ |
|
||
|
| http://www.phprpc.net/ |
|
||
|
| http://www.phprpc.com/ |
|
||
|
| http://sourceforge.net/projects/php-rpc/ |
|
||
|
| |
|
||
|
| Authors: Ma Bingyao <andot@ujn.edu.cn> |
|
||
|
| |
|
||
|
| This file may be distributed and/or modified under the |
|
||
|
| terms of the GNU General Public License (GPL) version |
|
||
|
| 2.0 as published by the Free Software Foundation and |
|
||
|
| appearing in the included file LICENSE. |
|
||
|
| |
|
||
|
\**********************************************************/
|
||
|
|
||
|
/* Diffie-Hellman Parameters for PHPRPC.
|
||
|
*
|
||
|
* Copyright: Ma Bingyao <andot@ujn.edu.cn>
|
||
|
* Version: 1.2
|
||
|
* LastModified: Apr 12, 2010
|
||
|
* This library is free. You can redistribute it and/or modify it under GPL.
|
||
|
*/
|
||
|
class DHParams {
|
||
|
var $len;
|
||
|
var $dhParams;
|
||
|
function getNearest($n, $a) {
|
||
|
$j = 0;
|
||
|
$m = abs($a[0] - $n);
|
||
|
for ($i = 1; $i < count($a); $i++) {
|
||
|
$t = abs($a[$i] - $n);
|
||
|
if ($m > $t) {
|
||
|
$m = $t;
|
||
|
$j = $i;
|
||
|
}
|
||
|
}
|
||
|
return $a[$j];
|
||
|
}
|
||
|
function DHParams($len = 128) {
|
||
|
if (extension_loaded('gmp')) {
|
||
|
$a = array(96, 128, 160, 192, 256, 512, 768, 1024, 1536, 2048, 3072, 4096);
|
||
|
}
|
||
|
else if (extension_loaded('big_int')) {
|
||
|
$a = array(96, 128, 160, 192, 256, 512, 768, 1024, 1536);
|
||
|
}
|
||
|
else if (extension_loaded('bcmath')) {
|
||
|
$a = array(96, 128, 160, 192, 256, 512);
|
||
|
}
|
||
|
else {
|
||
|
$a = array(96, 128, 160);
|
||
|
}
|
||
|
$this->len = $this->getNearest($len, $a);
|
||
|
$dhParams = unserialize(file_get_contents("dhparams/{$this->len}.dhp", true));
|
||
|
$this->dhParams = $dhParams[mt_rand(0, count($dhParams) - 1)];
|
||
|
}
|
||
|
function getL() {
|
||
|
return $this->len;
|
||
|
}
|
||
|
function getP() {
|
||
|
return $this->dhParams['p'];
|
||
|
}
|
||
|
function getG() {
|
||
|
return $this->dhParams['g'];
|
||
|
}
|
||
|
function getDHParams() {
|
||
|
return $this->dhParams;
|
||
|
}
|
||
|
}
|
||
|
?>
|