Toggle navigation
Toggle navigation
This project
Loading...
Sign in
fe
/
YOHOBUYPC
·
Commits
Go to a project
GitLab
Go to group
Project
Activity
Files
Commits
Pipelines
0
Builds
0
Graphs
Milestones
Issues
0
Merge Requests
2
Members
Labels
Wiki
Forks
Network
Create a new issue
Download as
Email Patches
Plain Diff
Browse Files
Authored by
周少峰
9 years ago
Commit
eb77cb07fc7039fb089e3806aae4a06d5de19d24
1 parent
3aaa3056
standard aes 138 ecb crypt
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
58 additions
and
53 deletions
library/WebPlugin/Encryption.php
library/WebPlugin/Encryption.php
View file @
eb77cb0
<?php
/**
*
加密解密
*
AES, 128 ECB模式加密数据
*/
namespace
WebPlugin
;
class
Encryption
{
// 密钥
private
static
$key
=
'123'
;
//密钥
private
static
$_secrect_key
=
'yoho9646abcdefgh'
;
// 加密
public
static
function
encrypt
(
$data
)
{
$char
=
''
;
$str
=
''
;
$key
=
md5
(
self
::
$key
);
$x
=
0
;
$len
=
strlen
(
$data
);
$l
=
strlen
(
$key
);
for
(
$i
=
0
;
$i
<
$len
;
$i
++
)
{
if
(
$x
==
$l
)
{
$x
=
0
;
}
$char
.=
$key
{
$x
};
$x
++
;
}
for
(
$i
=
0
;
$i
<
$len
;
$i
++
)
{
$str
.=
chr
(
ord
(
$data
{
$i
})
+
(
ord
(
$char
{
$i
}))
%
256
);
}
return
base64_encode
(
$str
);
/**
* 加密方法
* @param string $str
* @return string
*/
public
static
function
encrypt
(
$str
){
//AES, 128 ECB模式加密数据
$screct_key
=
self
::
$_secrect_key
;
$str
=
trim
(
$str
);
$str
=
self
::
addPKCS7Padding
(
$str
);
$iv
=
mcrypt_create_iv
(
mcrypt_get_iv_size
(
MCRYPT_RIJNDAEL_128
,
MCRYPT_MODE_ECB
),
MCRYPT_RAND
);
$encrypt_str
=
mcrypt_encrypt
(
MCRYPT_RIJNDAEL_128
,
$screct_key
,
$str
,
MCRYPT_MODE_ECB
,
$iv
);
return
base64_encode
(
$encrypt_str
);
}
//解密
public
static
function
decrypt
(
$data
)
{
$char
=
''
;
$str
=
''
;
/**
* 解密方法
* @param string $str
* @return string
*/
public
static
function
decrypt
(
$str
){
//AES, 128 ECB模式加密数据
$screct_key
=
self
::
$_secrect_key
;
$str
=
base64_decode
(
$str
);
$iv
=
mcrypt_create_iv
(
mcrypt_get_iv_size
(
MCRYPT_RIJNDAEL_128
,
MCRYPT_MODE_ECB
),
MCRYPT_RAND
);
$encrypt_str
=
mcrypt_decrypt
(
MCRYPT_RIJNDAEL_128
,
$screct_key
,
$str
,
MCRYPT_MODE_ECB
,
$iv
);
$encrypt_str
=
trim
(
$encrypt_str
);
$encrypt_str
=
self
::
stripPKSC7Padding
(
$encrypt_str
);
return
$encrypt_str
;
$key
=
md5
(
self
::
$key
);
$x
=
0
;
$data
=
base64_decode
(
$data
);
$len
=
strlen
(
$data
);
$l
=
strlen
(
$key
);
for
(
$i
=
0
;
$i
<
$len
;
$i
++
)
{
if
(
$x
==
$l
)
{
$x
=
+
0
;
}
$char
.=
substr
(
$key
,
$x
,
1
);
$x
++
;
}
for
(
$i
=
0
;
$i
<
$len
;
$i
++
)
{
if
(
ord
(
substr
(
$data
,
$i
,
1
))
<
ord
(
substr
(
$char
,
$i
,
1
)))
{
$str
.=
chr
((
ord
(
substr
(
$data
,
$i
,
1
))
+
256
)
-
ord
(
substr
(
$char
,
$i
,
1
)));
}
else
{
$str
.=
chr
(
ord
(
substr
(
$data
,
$i
,
1
))
-
ord
(
substr
(
$char
,
$i
,
1
)));
}
}
/**
* 填充算法
* @param string $source
* @return string
*/
private
static
function
addPKCS7Padding
(
$source
){
$source
=
trim
(
$source
);
$block
=
mcrypt_get_block_size
(
'rijndael-128'
,
'ecb'
);
$pad
=
$block
-
(
strlen
(
$source
)
%
$block
);
if
(
$pad
<=
$block
)
{
$char
=
chr
(
$pad
);
$source
.=
str_repeat
(
$char
,
$pad
);
}
return
$str
;
return
$source
;
}
/**
* 移去填充算法
* @param string $source
* @return string
*/
private
static
function
stripPKSC7Padding
(
$source
){
$source
=
trim
(
$source
);
$char
=
substr
(
$source
,
-
1
);
$num
=
ord
(
$char
);
if
(
$num
==
62
)
return
$source
;
$source
=
substr
(
$source
,
0
,
-
$num
);
return
$source
;
}
}
\ No newline at end of file
...
...
Please
register
or
login
to post a comment