Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
token
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wallet
token
Commits
c4978683
Commit
c4978683
authored
6 years ago
by
ZhuChunYang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
7b3a0c13
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
116 additions
and
0 deletions
+116
-0
CoinController.php
api/controllers/CoinController.php
+2
-0
Des.php
common/components/Des.php
+114
-0
No files found.
api/controllers/CoinController.php
View file @
c4978683
...
...
@@ -320,6 +320,8 @@ class CoinController extends BaseController
if
(
$platform
){
$platform_with_hold
=
CoinPlatformWithHold
::
getRecord
(
$platform
);
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
];
}
else
{
return
[
'code'
=>
0
,
'data'
=>
[]];
...
...
This diff is collapsed.
Click to expand it.
common/components/Des.php
0 → 100644
View file @
c4978683
<?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
);
}
}
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment