当前位置: 首页>>代码示例>>PHP>>正文


PHP Math_BigInteger::subtract方法代码示例

本文整理汇总了PHP中Math_BigInteger::subtract方法的典型用法代码示例。如果您正苦于以下问题:PHP Math_BigInteger::subtract方法的具体用法?PHP Math_BigInteger::subtract怎么用?PHP Math_BigInteger::subtract使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Math_BigInteger的用法示例。


在下文中一共展示了Math_BigInteger::subtract方法的12个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: randomNumber

 /**
  * Generate a number that lies between 0 and q-1.
  *
  * @param Math_BigInteger $q  Max number.
  *
  * @return Math_BigInteger  Generated number.
  */
 public static function randomNumber($q)
 {
     $bytes = strlen($q->toBytes()) + 8;
     $ints = $bytes + 1 >> 2;
     $cstring = crypt_random_string($ints);
     $random = '';
     for ($i = 0; $i < $ints; ++$i) {
         $random .= pack('N', $cstring[$i]);
     }
     $c = new Math_BigInteger(substr($random, 0, $bytes), 256);
     $one = new Math_BigInteger(1);
     $result_base = $c->divide($q->subtract($one));
     return $result_base[1]->add($one);
 }
开发者ID:raz0rsdge,项目名称:horde,代码行数:21,代码来源:DSA.php

示例2: getServerPublicHostKey

 /**
  * Returns the server public host key.
  *
  * Caching this the first time you connect to a server and checking the result on subsequent connections
  * is recommended.  Returns false if the server signature is not signed correctly with the public host key.
  *
  * @return Mixed
  * @access public
  */
 function getServerPublicHostKey()
 {
     if (!($this->bitmap & NET_SSH2_MASK_CONSTRUCTOR)) {
         $this->bitmap |= NET_SSH2_MASK_CONSTRUCTOR;
         if (!$this->_connect()) {
             return false;
         }
     }
     $signature = $this->signature;
     $server_public_host_key = $this->server_public_host_key;
     extract(unpack('Nlength', $this->_string_shift($server_public_host_key, 4)));
     $this->_string_shift($server_public_host_key, $length);
     if ($this->signature_validated) {
         return $this->bitmap ? $this->signature_format . ' ' . base64_encode($this->server_public_host_key) : false;
     }
     $this->signature_validated = true;
     switch ($this->signature_format) {
         case 'ssh-dss':
             $zero = new Math_BigInteger();
             $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
             $p = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
             $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
             $q = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
             $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
             $g = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
             $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
             $y = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
             /* The value for 'dss_signature_blob' is encoded as a string containing
                r, followed by s (which are 160-bit integers, without lengths or
                padding, unsigned, and in network byte order). */
             $temp = unpack('Nlength', $this->_string_shift($signature, 4));
             if ($temp['length'] != 40) {
                 user_error('Invalid signature');
                 return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
             }
             $r = new Math_BigInteger($this->_string_shift($signature, 20), 256);
             $s = new Math_BigInteger($this->_string_shift($signature, 20), 256);
             switch (true) {
                 case $r->equals($zero):
                 case $r->compare($q) >= 0:
                 case $s->equals($zero):
                 case $s->compare($q) >= 0:
                     user_error('Invalid signature');
                     return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
             }
             $w = $s->modInverse($q);
             $u1 = $w->multiply(new Math_BigInteger(sha1($this->exchange_hash), 16));
             list(, $u1) = $u1->divide($q);
             $u2 = $w->multiply($r);
             list(, $u2) = $u2->divide($q);
             $g = $g->modPow($u1, $p);
             $y = $y->modPow($u2, $p);
             $v = $g->multiply($y);
             list(, $v) = $v->divide($p);
             list(, $v) = $v->divide($q);
             if (!$v->equals($r)) {
                 user_error('Bad server signature');
                 return $this->_disconnect(NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE);
             }
             break;
         case 'ssh-rsa':
             $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
             $e = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
             $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
             $n = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
             $nLength = $temp['length'];
             /*
             $temp = unpack('Nlength', $this->_string_shift($signature, 4));
             $signature = $this->_string_shift($signature, $temp['length']);
             
             if (!class_exists('Crypt_RSA')) {
                 include_once 'Crypt/RSA.php';
             }
             
             $rsa = new Crypt_RSA();
             $rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1);
             $rsa->loadKey(array('e' => $e, 'n' => $n), CRYPT_RSA_PUBLIC_FORMAT_RAW);
             if (!$rsa->verify($this->exchange_hash, $signature)) {
                 user_error('Bad server signature');
                 return $this->_disconnect(NET_SSH2_DISCONNECT_HOST_KEY_NOT_VERIFIABLE);
             }
             */
             $temp = unpack('Nlength', $this->_string_shift($signature, 4));
             $s = new Math_BigInteger($this->_string_shift($signature, $temp['length']), 256);
             // validate an RSA signature per "8.2 RSASSA-PKCS1-v1_5", "5.2.2 RSAVP1", and "9.1 EMSA-PSS" in the
             // following URL:
             // ftp://ftp.rsasecurity.com/pub/pkcs/pkcs-1/pkcs-1v2-1.pdf
             // also, see SSHRSA.c (rsa2_verifysig) in PuTTy's source.
             if ($s->compare(new Math_BigInteger()) < 0 || $s->compare($n->subtract(new Math_BigInteger(1))) > 0) {
                 user_error('Invalid signature');
                 return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
//.........这里部分代码省略.........
开发者ID:pacificcasinohotel,项目名称:pointsystem,代码行数:101,代码来源:SSH2.php

示例3: while

 $got = $m->getMulti($keys, $null);
 while (!$got) {
     usleep(100000);
     $got = $m->getMulti($keys, $null);
 }
 $result1 = $got["blockinfo"];
 $result = $got["eth_getWork_response"];
 $key_Key = $shareCheckerKey;
 $CheckShareData = $got[$key_Key];
 //$result1 = $m->get('blockinfo');
 $block_info_last = json_decode($result1, true);
 $last_block_result = $block_info_last['result'];
 $last_block_diff = $last_block_result['difficulty'];
 $last_block_timestamp = new Math_BigInteger(hexdec($last_block_result['timestamp']));
 $current_time = new Math_BigInteger(time());
 $lastBlockTime_BI = $current_time->subtract($last_block_timestamp);
 $lastBlockTimeHex = $lastBlockTime_BI->toHex();
 $lastBlockTime = hexdec($lastBlockTimeHex);
 $block_number = $last_block_result['number'];
 $current .= "\n\nLAST BLOCK Diff:" . $last_block_diff . ' / ' . hexdec($last_block_diff);
 $current .= "\nLAST BLOCK Time:" . $last_block_timestamp;
 $current .= "\nLAST BLOCK Time:" . $lastBlockTime . 's';
 //Miner Get Work   Memcached -> run process_work
 //$result = $m->get('eth_getWork_response');
 $current .= "\n\nRespons1:" . $result;
 $TargetBlock = json_decode($result, true);
 $targetBlockResult = $TargetBlock['result'];
 $diffTarget = $targetBlockResult[2];
 $last_block_diff = new Math_BigInteger(hexdec($last_block_diff));
 if ($hash_rate) {
     $shareCheckerKey = 'submiting_' . $payout_addr . '_' . $hash_rate;
开发者ID:karek314,项目名称:Ethereumpool.co---Ethereum-Mining-Pool-Full-Source,代码行数:31,代码来源:index.php

示例4: die

$existResult = mysqli_query($mysqli, $existQuery) or die("Database Error");
while ($row = mysqli_fetch_row($existResult)) {
    $payer_adr = $row[0];
    echo "\n-------------------------------------------";
    echo "\n" . $payer_adr;
    echo "\nBalance: " . sprintf('%f', $row[1]) . " wei";
    echo "\nBalance: " . sprintf('%f', $row[1] / $ether_wei) . " ether";
    $current .= "\n-------------------------------------------";
    $current .= "\n" . $payer_adr;
    $current .= "\nBalance: " . sprintf('%f', $row[1]) . " wei";
    $current .= "\nBalance: " . sprintf('%f', $row[1] / $ether_wei) . " ether";
    if ($row[1] / $ether_wei >= 0.5) {
        $escapeDot = explode('.', sprintf('%f', $row[1]));
        $balancetopay = new Math_BigInteger($escapeDot[0]);
        $free2pay = new Math_BigInteger($gasprice);
        $resultPayment = $balancetopay->subtract($free2pay);
        $validBigHex = bcdechex($resultPayment->toString());
        echo "HexReverse:\n\n" . sprintf('%f', hexdec($validBigHex));
        $current .= "HexReverse:\n\n" . sprintf('%f', hexdec($validBigHex));
        $sendValue = '0x' . $validBigHex;
        $transactionState = 0;
        $transaction = array("from" => $coinbase, "to" => $payer_adr, "value" => $sendValue);
        $data = array("jsonrpc" => "2.0", "method" => "eth_sendTransaction", "params" => [$transaction], "id" => 1);
        $data_string = json_encode($data);
        $ch1 = curl_init('http://127.0.0.1:8983');
        curl_setopt($ch1, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch1, CURLOPT_POSTFIELDS, $data_string);
        curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch1, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($data_string)));
        $result3 = curl_exec($ch1);
        $block_info_last = json_decode($result3, true);
开发者ID:utocat,项目名称:Ethereumpool.co---Ethereum-Mining-Pool-Full-Source,代码行数:31,代码来源:index.php

示例5: getLogootPosition

 /**
  * generation of a position, logoot algorithm
  * @param <LogootPosition> $p is the previous logootPosition
  * @param <LogootPosition> $q is the next logootPosition
  * @param $N number of positions generated (should be 1 in our case)
  * @param <Integer> $rep_sid session id
  * @param <Integer> $rep_clock session clock
  * @param $boundary Cf. method
  * @return <LogootPosition List> $N logootPosition(s) between $start and $end
  */
 public static function getLogootPosition(LogootPosition $p, LogootPosition $q, $nb, $rep_sid, $rep_clock = 0, $boundary = NULL)
 {
     wfDebugLog('p2p', $rep_clock . " - function LogootPosition::getLogootPosition " . $p . " / " . $q . " pour " . $nb . " position(s)");
     $one = new Math_BigInteger("1");
     // Recherche de l'interval optimal
     $index = 0;
     $interval = INT_MIN;
     $size = max($p->size(), $q->size()) + 1;
     $prefix_p = array(0 => array('cum_val' => "", 'id_str_val' => ""));
     $prefix_q = array(0 => array('cum_val' => "", 'id_str_val' => ""));
     while ($interval < $nb) {
         $index += 1;
         // recherche de prefix($p, index);
         if ($index <= $p->size()) {
             $str_val_p = str_pad($p->get($index - 1)->getInt(), DIGIT, "0", STR_PAD_LEFT);
         } else {
             $str_val_p = LPINTMINDIGIT;
         }
         $prefix_p[$index] = array('id_str_val' => $str_val_p, 'cum_val' => $prefix_p[$index - 1]['cum_val'] . $str_val_p);
         // recherche de prefix($p, index);
         if ($index <= $q->size()) {
             $str_val_q = str_pad($q->get($index - 1)->getInt(), DIGIT, "0", STR_PAD_LEFT);
         } else {
             $str_val_q = LPINTMINDIGIT;
         }
         $prefix_q[$index] = array('id_str_val' => $str_val_q, 'cum_val' => $prefix_q[$index - 1]['cum_val'] . $str_val_q);
         // Calcul de l'interval sur les nouveaux prefixes
         $BI_p = new Math_BigInteger($prefix_p[$index]['cum_val']);
         $BI_q = new Math_BigInteger($prefix_q[$index]['cum_val']);
         $BIinterval = $BI_q->subtract($BI_p)->subtract($one);
         $interval = (int) $BIinterval->__toString();
         /*wfDebugLog('p2p', $index
           . " : Prefix_p " . (string) $prefix_p[$index]['cum_val'] . '/'
           . $prefix_p[$index]['id_str_val']
           . " Prefix_q " . (string) $prefix_q[$index]['cum_val'] . '/'
           . $prefix_q[$index]['id_str_val']
           . " Interval " . $interval);*/
     }
     // Construction des identifiants
     //wfDebugLog('p2p', "N " . $nb . " Interval " . $interval . " index " . $index);
     $step = (int) $interval / $nb;
     if (isset($boundary)) {
         $step = $boundary < $step ? $boundary : $step;
     }
     $BI_step = new Math_BigInteger($step);
     $BI_r = new Math_BigInteger($prefix_p[$index]['cum_val']);
     $list = array();
     //wfDebugLog('p2p', "Step :" . $step . "/" . $boundary);
     for ($j = 1; $j <= $nb; $j++) {
         $BI_nr = $BI_r->add(new Math_BigInteger(rand(1, $step)));
         //wfDebugLog('p2p', "nr " . (string) $BI_nr . " r " . (string) $BI_r);
         // pour découper une chaine en paquets de N car : str_split($cdc, $N) !
         $str_nr0 = (string) $BI_nr;
         // on fait en sorte que le découpage soit un multiple de DIGIT pour ne pas créer de décallage
         if (strlen($str_nr0) % ($index * DIGIT) != 0) {
             $str_nr = str_pad($str_nr0, strlen($str_nr0) + ($index * DIGIT - strlen($str_nr0) % ($index * DIGIT)), "0", STR_PAD_LEFT);
         } else {
             $str_nr = $str_nr0;
         }
         //wfDebugLog('p2p', "str_nr0 " . $str_nr0 . " str_nr " . $str_nr);
         $tab_nr = str_split($str_nr, DIGIT);
         $pos = new LogootPosition();
         for ($i = 1; $i <= count($tab_nr); $i++) {
             $d = $tab_nr[$i - 1];
             //wfDebugLog('p2p', "$i#" . $prefix_p[$i]['id_str_val'] . "#" . $prefix_q[$i]['id_str_val'] . "#" . $d);
             if ($i <= $p->size() && $prefix_p[$i]['id_str_val'] == $d) {
                 $id = new LogootId($d, $p->get($i - 1)->getSessionId(), $p->get($i - 1)->getClock());
             } elseif ($i <= $q->size() && $prefix_q[$i]['id_str_val'] == $d) {
                 $id = new LogootId($d, $q->get($i - 1)->getSessionId(), $q->get($i - 1)->getClock());
             } else {
                 $id = new LogootId($d, $rep_sid, $rep_clock);
             }
             $pos->addId($id);
         }
         wfDebugLog('p2p', "===========>" . $pos->__toString());
         $list[] = $pos;
         $BI_r = $BI_r->add($BI_step);
     }
     return $list;
 }
开发者ID:hala54,项目名称:DSMW,代码行数:90,代码来源:LogootPosition.php

示例6: array

     curl_setopt($ch1, CURLOPT_CUSTOMREQUEST, "POST");
     curl_setopt($ch1, CURLOPT_POSTFIELDS, $data_string);
     curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($ch1, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Content-Length: ' . strlen($data_string)));
     $result3 = curl_exec($ch1);
     $block_info_last = json_decode($result3, true);
     $escapeDot = explode('.', sprintf('%f', hexdec($block_info_last['result'])));
     $balanceaddr = new Math_BigInteger($escapeDot[0]);
 } else {
     $block_info_last = json_decode($result3, true);
     $balanceaddr = new Math_BigInteger($block_info_last['result']);
 }
 $block_coins_size = new Math_BigInteger('0');
 $balanceToSave = new Math_BigInteger('0');
 if (!$real_balance_prev == 0) {
     $block_coins_size = $balanceaddr->subtract($real_balance_prev);
 } else {
     $block_coins_size = $balanceaddr;
 }
 if ($block_coins_size < 0) {
     $block_coins_size = new Math_BigInteger('0');
 }
 if (strpos($block_coins_size->toString(), '-') !== false) {
     $block_coins_size = new Math_BigInteger('0');
 }
 if (!$block_coins_size) {
     die('Invalid block coins size');
 }
 if ($block_coins_size <= 0) {
     die('Invalid block coins size = 0');
 }
开发者ID:cpplover,项目名称:Ethereumpool.co---Ethereum-Mining-Pool-Full-Source,代码行数:31,代码来源:index.php

示例7: array


//.........这里部分代码省略.........
     // through diffie-hellman key exchange a symmetric key is obtained
     for ($i = 0; $i < count($kex_algorithms) && !in_array($kex_algorithms[$i], $this->kex_algorithms); $i++) {
     }
     if ($i == count($kex_algorithms)) {
         user_error('No compatible key exchange algorithms found', E_USER_NOTICE);
         return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
     }
     switch ($kex_algorithms[$i]) {
         // see http://tools.ietf.org/html/rfc2409#section-6.2 and
         // http://tools.ietf.org/html/rfc2412, appendex E
         case 'diffie-hellman-group1-sha1':
             $p = pack('H256', 'FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74' . '020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F1437' . '4FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED' . 'EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE65381FFFFFFFFFFFFFFFF');
             $keyLength = $keyLength < 160 ? $keyLength : 160;
             $hash = 'sha1';
             break;
             // see http://tools.ietf.org/html/rfc3526#section-3
         // see http://tools.ietf.org/html/rfc3526#section-3
         case 'diffie-hellman-group14-sha1':
             $p = pack('H512', 'FFFFFFFFFFFFFFFFC90FDAA22168C234C4C6628B80DC1CD129024E088A67CC74' . '020BBEA63B139B22514A08798E3404DDEF9519B3CD3A431B302B0A6DF25F1437' . '4FE1356D6D51C245E485B576625E7EC6F44C42E9A637ED6B0BFF5CB6F406B7ED' . 'EE386BFB5A899FA5AE9F24117C4B1FE649286651ECE45B3DC2007CB8A163BF05' . '98DA48361C55D39A69163FA8FD24CF5F83655D23DCA3AD961C62F356208552BB' . '9ED529077096966D670C354E4ABC9804F1746C08CA18217C32905E462E36CE3B' . 'E39E772C180E86039B2783A2EC07A28FB5C55DF06F4C52C9DE2BCBF695581718' . '3995497CEA956AE515D2261898FA051015728E5A8AACAA68FFFFFFFFFFFFFFFF');
             $keyLength = $keyLength < 160 ? $keyLength : 160;
             $hash = 'sha1';
     }
     $p = new Math_BigInteger($p, 256);
     //$q = $p->bitwise_rightShift(1);
     /* To increase the speed of the key exchange, both client and server may
                reduce the size of their private exponents.  It should be at least
                twice as long as the key material that is generated from the shared
                secret.  For more details, see the paper by van Oorschot and Wiener
                [VAN-OORSCHOT].
     
                -- http://tools.ietf.org/html/rfc4419#section-6.2 */
     $q = new Math_BigInteger(1);
     $q = $q->bitwise_leftShift(2 * $keyLength);
     $q = $q->subtract(new Math_BigInteger(1));
     $g = new Math_BigInteger(2);
     $x = new Math_BigInteger();
     $x->setRandomGenerator('crypt_random');
     $x = $x->random(new Math_BigInteger(1), $q);
     $e = $g->modPow($x, $p);
     $eBytes = $e->toBytes(true);
     $data = pack('CNa*', NET_SSH2_MSG_KEXDH_INIT, strlen($eBytes), $eBytes);
     if (!$this->_send_binary_packet($data)) {
         user_error('Connection closed by server', E_USER_NOTICE);
         return false;
     }
     $response = $this->_get_binary_packet();
     if ($response === false) {
         user_error('Connection closed by server', E_USER_NOTICE);
         return false;
     }
     extract(unpack('Ctype', $this->_string_shift($response, 1)));
     if ($type != NET_SSH2_MSG_KEXDH_REPLY) {
         user_error('Expected SSH_MSG_KEXDH_REPLY', E_USER_NOTICE);
         return false;
     }
     $temp = unpack('Nlength', $this->_string_shift($response, 4));
     $this->server_public_host_key = $server_public_host_key = $this->_string_shift($response, $temp['length']);
     $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
     $public_key_format = $this->_string_shift($server_public_host_key, $temp['length']);
     $temp = unpack('Nlength', $this->_string_shift($response, 4));
     $fBytes = $this->_string_shift($response, $temp['length']);
     $f = new Math_BigInteger($fBytes, -256);
     $temp = unpack('Nlength', $this->_string_shift($response, 4));
     $signature = $this->_string_shift($response, $temp['length']);
     $temp = unpack('Nlength', $this->_string_shift($signature, 4));
     $signature_format = $this->_string_shift($signature, $temp['length']);
开发者ID:helenadeus,项目名称:s3db.map,代码行数:67,代码来源:SSH2.php

示例8: array


//.........这里部分代码省略.........
     // through diffie-hellman key exchange a symmetric key is obtained
     for ($i = 0; $i < count($kex_algorithms) && !in_array($kex_algorithms[$i], $this->kex_algorithms); $i++) {
     }
     if ($i == count($kex_algorithms)) {
         user_error('No compatible key exchange algorithms found', E_USER_NOTICE);
         return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
     }
     switch ($kex_algorithms[$i]) {
         // see http://tools.ietf.org/html/rfc2409#section-6.2 and
         // http://tools.ietf.org/html/rfc2412, appendex E
         case 'diffie-hellman-group1-sha1':
             $p = pack('N32', 4294967295.0, 4294967295.0, 3373259426.0, 0x2168c234, 3301335691.0, 2161908945.0, 0x29024e08, 2322058356.0, 0x20bbea6, 0x3b139b22, 0x514a0879, 0.0, 0.0, 3443147547.0, 0x302b0a6d, 4066317367.0, 0x4fe1356d, 0x6d51c245, 0.0, 0x625e7ec6, 0.0, 0.0, 0xbff5cb6, 0.0, 0.0, 0x5a899fa5, 0.0, 0x7c4b1fe6, 0x49286651, 0.0, 4294967295.0, 4294967295.0);
             $keyLength = $keyLength < 160 ? $keyLength : 160;
             $hash = 'sha1';
             break;
             // see http://tools.ietf.org/html/rfc3526#section-3
         // see http://tools.ietf.org/html/rfc3526#section-3
         case 'diffie-hellman-group14-sha1':
             $p = pack('N64', 4294967295.0, 4294967295.0, 3373259426.0, 0x2168c234, 3301335691.0, 2161908945.0, 0x29024e08, 2322058356.0, 0x20bbea6, 0x3b139b22, 0x514a0879, 0.0, 0.0, 3443147547.0, 0x302b0a6d, 4066317367.0, 0x4fe1356d, 0x6d51c245, 0.0, 0x625e7ec6, 0.0, 0.0, 0xbff5cb6, 0.0, 0.0, 0x5a899fa5, 0.0, 0x7c4b1fe6, 0x49286651, 0.0, 3254811832.0, 2707668741.0, 2564442166.0, 0x1c55d39a, 0x69163fa8, 4247048031.0, 2204458275.0, 3701714326.0, 0x1c62f356, 0x208552bb, 0.0, 0x7096966d, 0x670c354e, 0x4abc9804, 4050938888.0, 3390579068.0, 0x32905e46, 0x2e36ce3b, 0.0, 0x180e8603, 2603058082.0, 0.0, 3049610736.0, 0x6f4c52c9, 0.0, 2505578264.0, 0x3995497c, 0.0, 0x15d22618, 2566522128.0, 0x15728e5a, 2326571624.0, 4294967295.0, 4294967295.0);
             $keyLength = $keyLength < 160 ? $keyLength : 160;
             $hash = 'sha1';
     }
     $p = new Math_BigInteger($p, 256);
     //$q = $p->bitwise_rightShift(1);
     /* To increase the speed of the key exchange, both client and server may
                reduce the size of their private exponents.  It should be at least
                twice as long as the key material that is generated from the shared
                secret.  For more details, see the paper by van Oorschot and Wiener
                [VAN-OORSCHOT].
     
                -- http://tools.ietf.org/html/rfc4419#section-6.2 */
     $q = new Math_BigInteger(1);
     $q = $q->bitwise_leftShift(2 * $keyLength);
     $q = $q->subtract(new Math_BigInteger(1));
     $g = new Math_BigInteger(2);
     $x = new Math_BigInteger();
     $x = $x->random(new Math_BigInteger(1), $q, 'crypt_random');
     $e = $g->modPow($x, $p);
     $eBytes = $e->toBytes(true);
     $data = pack('CNa*', NET_SSH2_MSG_KEXDH_INIT, strlen($eBytes), $eBytes);
     if (!$this->_send_binary_packet($data)) {
         user_error('Connection closed by server', E_USER_NOTICE);
         return false;
     }
     $response = $this->_get_binary_packet();
     if ($response === false) {
         user_error('Connection closed by server', E_USER_NOTICE);
         return false;
     }
     list(, $type) = unpack('C', $this->_string_shift($response, 1));
     if ($type != NET_SSH2_MSG_KEXDH_REPLY) {
         user_error('Expected SSH_MSG_KEXDH_REPLY', E_USER_NOTICE);
         return false;
     }
     $temp = unpack('Nlength', $this->_string_shift($response, 4));
     $this->server_public_host_key = $server_public_host_key = $this->_string_shift($response, $temp['length']);
     $temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
     $public_key_format = $this->_string_shift($server_public_host_key, $temp['length']);
     $temp = unpack('Nlength', $this->_string_shift($response, 4));
     $fBytes = $this->_string_shift($response, $temp['length']);
     $f = new Math_BigInteger($fBytes, -256);
     $temp = unpack('Nlength', $this->_string_shift($response, 4));
     $signature = $this->_string_shift($response, $temp['length']);
     $temp = unpack('Nlength', $this->_string_shift($signature, 4));
     $signature_format = $this->_string_shift($signature, $temp['length']);
     $key = $f->modPow($x, $p);
开发者ID:qickrooms,项目名称:flextermshell,代码行数:67,代码来源:SSH2.php

示例9: getLogootPosition

 /**
  * generation of a position, logoot algorithm
  * @param <Object> $start is the previous logootPosition
  * @param <Object> $end is the next logootPosition
  * @param <Integer> $N number of positions generated (should be 1 in our case)
  * @param <Object> $sid session id
  * @return <Object> a logootPosition between $start and $end
  */
 private function getLogootPosition($start, $end, $N, $sid)
 {
     $result = array();
     $Id_Max = LogootId::IdMax();
     $Id_Min = LogootId::IdMin();
     $i = 0;
     $pos = array();
     $currentPosition = new LogootPosition($pos);
     // voir constructeur
     $inf = new Math_BigInteger("0");
     $sup = new Math_BigInteger("0");
     $isInf = false;
     while (true) {
         $inf = new Math_BigInteger($start->get($i)->getInt());
         if ($isInf == true) {
             $sup = new Math_BigInteger(INT_MAX);
         } else {
             $sup = new Math_BigInteger($end->get($i)->getInt());
         }
         $tmpVal = $sup->subtract($inf);
         $tmpVal1 = $tmpVal->subtract(new Math_BigInteger("1"));
         if ($tmpVal1->compare($N) > 0) {
             //				inf = start.get(i).getInteger();
             //				sup = end.get(i).getInteger();
             break;
         }
         $currentPosition->add($start->get($i));
         $i++;
         if ($i == $start->size()) {
             $start->add($Id_Min);
         }
         if ($i == $end->size()) {
             $end->add($Id_Max);
         }
         if ($inf->compare($sup) < 0) {
             $isInf = true;
         }
     }
     $binf = $inf->add(new Math_BigInteger("1"));
     $bsup = $sup->subtract(new Math_BigInteger("1"));
     $slot = $bsup->subtract($binf);
     $stepTmp = $slot->divide($N);
     $step = $stepTmp[0];
     // quotient, [1] is the remainder
     $old = clone $currentPosition;
     if ($step->compare(new Math_BigInteger(INT_MAX)) > 0) {
         $lstep = new Math_BigInteger(INT_MAX);
         $r = clone $currentPosition;
         $tmpVal2 = $inf->random($inf, $sup);
         $r->set($i, $tmpVal2->toString(), $sid);
         $result[] = $r;
         // result est une arraylist<Position>
         return $result;
     } else {
         $lstep = $step;
     }
     if ($lstep->compare(new Math_BigInteger("0")) == 0) {
         $lstep = new Math_BigInteger("1");
     }
     $p = clone $currentPosition;
     $p->set($i, $inf->toString(), $sid);
     $tmpVal3 = (int) $N->toString();
     for ($j = 0; $j < $tmpVal3; $j++) {
         $r = clone $p;
         if (!($lstep->compare(new Math_BigInteger("1")) == 0)) {
             $tmpVal4 = new Math_BigInteger($p->get($i)->getInt());
             $tmpVal5 = $tmpVal4->add($lstep);
             // max
             $tmpVal6 = new Math_BigInteger($p->get($i)->getInt());
             // min
             $add = $tmpVal6->random($tmpVal6, $tmpVal5);
             $r->set($i, $add->toString(), $sid);
         } else {
             $r->add1($i, new Math_BigInteger("1"), $sid);
         }
         $result[] = clone $r;
         // voir
         $old = clone $r;
         $tmpVal7 = new Math_BigInteger($p->get($i)->getInt());
         $tmpVal7 = $tmpVal7->add($lstep);
         $p->set($i, $tmpVal7->toString(), $sid);
     }
     return $result;
 }
开发者ID:realsoc,项目名称:mediawiki-extensions,代码行数:92,代码来源:logootEngine.php

示例10: _mod2

 /**
  * Modulos for Powers of Two
  *
  * Calculates $x%$n, where $n = 2**$e, for some $e.  Since this is basically the same as doing $x & ($n-1),
  * we'll just use this function as a wrapper for doing that.
  *
  * @see _slidingWindow()
  * @access private
  * @param Math_BigInteger
  * @return Math_BigInteger
  */
 private function _mod2(Math_BigInteger $n)
 {
     $temp = new Math_BigInteger();
     $temp->value = array(1);
     return $this->bitwise_and($n->subtract($temp));
 }
开发者ID:tomi77,项目名称:sfPEARcaptchaPlugin,代码行数:17,代码来源:BigInteger.php

示例11: get_entry_data

function get_entry_data($db)
{
    $q = "SELECT session.*, treatment.opt as opt, `pre-pop` as pre_pop, warning_type FROM session, treatment WHERE session.treatment_id=treatment.id";
    try {
        $results = $db->query($q);
        $data = $results->fetchAll(PDO::FETCH_ASSOC);
    } catch (PDOException $e) {
        print $e->getMessage();
    }
    $headers = array();
    $headersSet = false;
    //a list of fields that you don't want in the data file
    $ignore = array('sid', 'mturk_id', 'pre_email', 'pre_mturk_id');
    $q = "SELECT * FROM page_event WHERE event_name='load' OR page_name='purchase.php' OR subject_name='secondStage' ORDER BY session_id ASC, ts_ms ASC";
    $r = $db->query($q);
    $all_event_data = $r->fetchAll(PDO::FETCH_ASSOC);
    for ($i = 0; $i < count($data); $i++) {
        $row2 = array();
        $row3 = array();
        //All of the manipulations below process the data and create new field values
        //and new columns. Any key in the $data array will become a column heading
        $data[$i]['finished'] = $data[$i]['post_info'] != '' ? 'true' : 'false';
        //possible options for email sent are 'true','false', or 'true|SAME', etc.
        $data[$i]['email_sent'] = explode('|', $data[$i]['email_sent']);
        //this could also be named 'is_cheater'
        $data[$i]['email_sent_revised_matches'] = 'undef';
        if (count($data[$i]['email_sent']) > 1) {
            $data[$i]['email_sent_revised_matches'] = $data[$i]['email_sent'][1];
        }
        //does the email from the checkout page match the email from the survey?
        $data[$i]['email_matches_pre_post'] = 'undef';
        if ($data[$i]['post_email'] != 'undef' && $data[$i]['post_email'] != '') {
            if ($data[$i]['pre_email'] == $data[$i]['post_email']) {
                $data[$i]['email_matches_pre_post'] = 'true';
            } else {
                $data[$i]['email_matches_pre_post'] = 'false';
            }
        }
        //just the 'true' or 'false' part
        $data[$i]['email_sent'] = $data[$i]['email_sent'][0];
        //Calculate their bonus (need to change if payment amount changes)
        $data[$i]['bonus'] = 'NO FINISH';
        if ($data[$i]['finished'] == 'true') {
            $data[$i]['bonus'] = 0.51;
            if ($data[$i]['email_sent'] == 'true') {
                $data[$i]['bonus'] = 0.01;
            }
        }
        //figure out the timing of a participant's actions (never quiet figured this out)
        $data[$i]['purchase_page_mins'] = 'NEVER REACHED';
        $data[$i]['total_time_mins'] = 'NEVER REACHED';
        $last_page = 'undef';
        $load_purchase_page = 'ERROR';
        $close_purchase_page = 'ERROR';
        $load_first_page = 'ERROR';
        $close_last_page = 'ERROR';
        $sid = intval($data[$i]['id']);
        for ($j = 0; $j < count($all_event_data); $j++) {
            $e_sid = intval($all_event_data[$j]['session_id']);
            if ($e_sid < $sid) {
                continue;
            } elseif ($e_sid > $sid) {
                $close_last_page = new Math_BigInteger($all_event_data[$j - 1]['ts_ms']);
                $last_page = $all_event_data[$j - 1];
                break;
            }
            //only if we are in the right session
            $e = $all_event_data[$j];
            //this is the first event for this session
            if ($j == 0 || $j > 0 && intval($all_event_data[$j - 1]['session_id']) < $sid) {
                $load_first_page = new Math_BigInteger($e['ts_ms']);
                $close_last_page = new Math_BigInteger($e['ts_ms']);
            }
            if ($all_event_data[$j]['page_name'] == 'purchase.php') {
                $event_name = $e['event_name'];
                $subject_name = $e['subject_name'];
                if ($event_name == 'load') {
                    $load_purchase_page = new Math_BigInteger($e['ts_ms']);
                } elseif ($subject_name != 'page') {
                    $close_purchase_page = new Math_BigInteger($e['ts_ms']);
                    //break;
                }
            }
            if ($close_purchase_page != 'ERROR') {
                $data[$i]['purchase_page_mins'] = $close_purchase_page->subtract($load_purchase_page)->toString();
                $data[$i]['purchase_page_mins'] = round(intval($data[$i]['purchase_page_mins']) / 1000 / 60, 2);
            } else {
                $data[$i]['purchase_page_mins'] = 'DROPPED';
            }
            $data[$i]['total_time_mins'] = $close_last_page->subtract($load_first_page)->toString();
            $data[$i]['total_time_mins'] = round(intval($data[$i]['total_time_mins']) / 1000 / 60, 2);
        }
        ////////////
        //last_page is the last page that a participant saw in the experiment
        //the $last_page var comes from the timing loop above, which works the right way
        //(even if timing doesn't work right)
        $data[$i]['last_page'] = 'undef';
        if ($data[$i]['finished'] == 'true') {
            $data[$i]['last_page'] = 'FINISHED';
        } else {
//.........这里部分代码省略.........
开发者ID:KaitlynDodds,项目名称:melodiesforus,代码行数:101,代码来源:get_results.php

示例12: _win64ToUnix

 /**
  *
  * @param  Math_BigInteger $bci
  * @return string
  */
 protected static function _win64ToUnix($bci)
 {
     // Unix epoch as a Windows file date-time value
     $t = $bci->subtract(new Math_BigInteger('116444735995904000'));
     // Cast to Unix epoch
     list($quotient, $remainder) = $t->divide(new Math_BigInteger('10000000'));
     return (string) $quotient;
 }
开发者ID:raz0rsdge,项目名称:horde,代码行数:13,代码来源:Mapi.php


注:本文中的Math_BigInteger::subtract方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。