1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- <?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;
- }
- }
- ?>
|