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