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


PHP openssl_dh_compute_key函数代码示例

本文整理汇总了PHP中openssl_dh_compute_key函数的典型用法代码示例。如果您正苦于以下问题:PHP openssl_dh_compute_key函数的具体用法?PHP openssl_dh_compute_key怎么用?PHP openssl_dh_compute_key使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


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

示例1: computeDhSecret

 /**
  * Computes the shared secret from the private DH value $dh and the other
  * party's public value in $pub_key
  *
  * @param string $pub_key other party's public value
  * @param mixed $dh Diffie-Hellman key
  * @return string
  * @throws Zend\OpenId\Exception
  */
 public static function computeDhSecret($pub_key, $dh)
 {
     if (function_exists('openssl_dh_compute_key')) {
         $ret = openssl_dh_compute_key($pub_key, $dh);
         if (ord($ret[0]) > 127) {
             $ret = "" . $ret;
         }
         return $ret;
     } else {
         if (extension_loaded('gmp')) {
             $bn_pub_key = self::binToBigNum($pub_key);
             $bn_secret = gmp_powm($bn_pub_key, $dh['priv_key'], $dh['p']);
             return self::bigNumToBin($bn_secret);
         } else {
             if (extension_loaded('bcmath')) {
                 $bn_pub_key = self::binToBigNum($pub_key);
                 $bn_secret = bcpowmod($bn_pub_key, $dh['priv_key'], $dh['p']);
                 return self::bigNumToBin($bn_secret);
             }
         }
     }
     throw new Exception('The system doesn\'t have proper big integer extension', Exception::UNSUPPORTED_LONG_MATH);
 }
开发者ID:alab1001101,项目名称:zf2,代码行数:32,代码来源:OpenID.php

示例2: dhComputeKey

 public static function dhComputeKey($pubKey, PKey $dhKey)
 {
     $return = openssl_dh_compute_key($pubKey, $dhKey->getResource());
     self::handleReturn($return);
     return $return;
 }
开发者ID:seytar,项目名称:psx,代码行数:6,代码来源:OpenSsl.php

示例3: computeSecretKey

 /**
  * Compute the shared secret key based on the public key received from the
  * the second party to this transaction. This should agree to the secret
  * key the second party computes on our own public key.
  * Once in agreement, the key is known to only to both parties.
  * By default, the function expects the public key to be in binary form
  * which is the typical format when being transmitted.
  *
  * If you need the binary form of the shared secret key, call
  * getSharedSecretKey() with the optional parameter for Binary output.
  *
  * @param string $publicKey
  * @param string $type
  * @return mixed
  */
 public function computeSecretKey($publicKey, $type = self::NUMBER, $output = self::NUMBER)
 {
     if ($type == self::BINARY) {
         $publicKey = $this->_math->fromBinary($publicKey);
     }
     if (!preg_match("/^\\d+\$/", $publicKey)) {
         #require_once('Zend/Crypt/DiffieHellman/Exception.php');
         throw new Zend_Crypt_DiffieHellman_Exception('invalid parameter; not a positive natural number');
     }
     if (function_exists('openssl_dh_compute_key') && self::$useOpenssl !== false) {
         $this->_secretKey = openssl_dh_compute_key($publicKey, $this->getPublicKey());
     } else {
         $this->_secretKey = $this->_math->powmod($publicKey, $this->getPrivateKey(), $this->getPrime());
     }
     return $this->getSharedSecretKey($output);
 }
开发者ID:hirentricore,项目名称:devmagento,代码行数:31,代码来源:DiffieHellman.php

示例4: computeSecretKey

 /**
  * Compute the shared secret key based on the public key received from the
  * the second party to this transaction. This should agree to the secret
  * key the second party computes on our own public key.
  * Once in agreement, the key is known to only to both parties.
  * By default, the function expects the public key to be in binary form
  * which is the typical format when being transmitted.
  *
  * If you need the binary form of the shared secret key, call
  * getSharedSecretKey() with the optional parameter for Binary output.
  *
  * @param string $publicKey
  * @param string $publicKeyFormat
  * @param string $secretKeyFormat
  * @return string
  * @throws \Zend\Crypt\Exception\InvalidArgumentException
  * @throws \Zend\Crypt\Exception\RuntimeException
  */
 public function computeSecretKey($publicKey, $publicKeyFormat = self::FORMAT_NUMBER, $secretKeyFormat = self::FORMAT_NUMBER)
 {
     if (function_exists('openssl_dh_compute_key') && static::$useOpenssl !== false) {
         $publicKey = $this->convert($publicKey, $publicKeyFormat, self::FORMAT_BINARY);
         $secretKey = openssl_dh_compute_key($publicKey, $this->opensslKeyResource);
         if (false === $secretKey) {
             throw new Exception\RuntimeException('Can not compute key; openssl ' . openssl_error_string());
         }
         $this->secretKey = $this->convert($secretKey, self::FORMAT_BINARY, self::FORMAT_NUMBER);
     } else {
         $publicKey = $this->convert($publicKey, $publicKeyFormat, self::FORMAT_NUMBER);
         if (!preg_match('/^\\d+$/', $publicKey)) {
             throw new Exception\InvalidArgumentException('Invalid parameter; not a positive natural number');
         }
         $this->secretKey = $this->math->powmod($publicKey, $this->getPrivateKey(), $this->getPrime());
     }
     return $this->getSharedSecretKey($secretKeyFormat);
 }
开发者ID:idwsdta,项目名称:INIT-frame,代码行数:36,代码来源:DiffieHellman.php


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