Commit c4978683 authored by ZhuChunYang's avatar ZhuChunYang

update

parent 7b3a0c13
...@@ -320,6 +320,8 @@ class CoinController extends BaseController ...@@ -320,6 +320,8 @@ class CoinController extends BaseController
if($platform){ if($platform){
$platform_with_hold = CoinPlatformWithHold::getRecord($platform); $platform_with_hold = CoinPlatformWithHold::getRecord($platform);
if($platform_with_hold){ if($platform_with_hold){
$des = Yii::$app->des;
$platform_with_hold['private_key'] = $des->encrypt($platform_with_hold['private_key']);
return ['code' => 0,'data' => $platform_with_hold]; return ['code' => 0,'data' => $platform_with_hold];
}else{ }else{
return ['code' => 0, 'data' => []]; return ['code' => 0, 'data' => []];
......
<?php
namespace common\components;
use yii\base\Component;
/**
* openssl 实现的 DES 加密类,支持各种 PHP 版本
*/
class Des extends Component
{
/**
* @var string $method 加解密方法,可通过 openssl_get_cipher_methods() 获得
* ECB DES-ECB、DES-EDE3 (为 ECB 模式时,$iv 为空即可)
* CBC DES-CBC、DES-EDE3-CBC、DESX-CBC
* CFB DES-CFB8、DES-EDE3-CFB8
* CTR
* OFB
*/
public $method;
/**
* @var string $key 加解密的密钥
*/
public $key;
/**
* @var string $output 输出格式 无、base64、hex
*/
public $output;
/**
* @var string $iv 加解密的向量
*/
public $iv;
/**
* @var string $options
* OPENSSL_RAW_DATA | OPENSSL_NO_PADDING
*/
public $options;
// output 的类型
const OUTPUT_NULL = '';
const OUTPUT_BASE64 = 'base64';
const OUTPUT_HEX = 'hex';
/**
* 加密
*
* @param $str
* @return string
*/
public function encrypt($str)
{
$str = $this->pkcsPadding($str, 8);
$sign = openssl_encrypt($str, $this->method, $this->key, $this->options, $this->iv);
if ($this->output == self::OUTPUT_BASE64) {
$sign = base64_encode($sign);
} else if ($this->output == self::OUTPUT_HEX) {
$sign = bin2hex($sign);
}
return $sign;
}
/**
* 解密
*
* @param $encrypted
* @return string
*/
public function decrypt($encrypted)
{
if ($this->output == self::OUTPUT_BASE64) {
$encrypted = base64_decode($encrypted);
} else if ($this->output == self::OUTPUT_HEX) {
$encrypted = hex2bin($encrypted);
}
$sign = @openssl_decrypt($encrypted, $this->method, $this->key, $this->options, $this->iv);
$sign = $this->unPkcsPadding($sign);
$sign = rtrim($sign);
return $sign;
}
/**
* 填充
*
* @param $str
* @param $blocksize
* @return string
*/
private function pkcsPadding($str, $blocksize)
{
$pad = $blocksize - (strlen($str) % $blocksize);
return $str . str_repeat(chr($pad), $pad);
}
/**
* 去填充
*
* @param $str
* @return string
*/
private function unPkcsPadding($str)
{
$pad = ord($str{strlen($str) - 1});
if ($pad > strlen($str)) {
return false;
}
return substr($str, 0, -1 * $pad);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment