点击蓝字关注我们!每天获取最新的编程小知识!
源 / php中文网 源 / www.php.cn
本篇文章将带大家一起学习用PHP实现加解密,代码具有一定参考价值,有需要的朋友可以看看。
//加密函数
function
passport_encrypt(
$txt
,
$key
) {
srand((double)microtime() * 1000000);
$encrypt_key
= md5(rand(0, 32000));
$ctr
= 0;
$tmp
=
''
;
for
(
$i
= 0;
$i
<
strlen
(
$txt
);
$i
++) {
$ctr
=
$ctr
==
strlen
(
$encrypt_key
) ? 0 :
$ctr
;
$tmp
.=
$encrypt_key
[
$ctr
].(
$txt
[
$i
] ^
$encrypt_key
[
$ctr
++]);
}
return
base64_encode
(passport_key(
$tmp
,
$key
));
}
//解密函数
function
passport_decrypt(
$txt
,
$key
) {
$txt
= passport_key(
base64_decode
(
$txt
),
$key
);
$tmp
=
''
;
for
(
$i
= 0;
$i
<
strlen
(
$txt
);
$i
++) {
$md5
=
$txt
[
$i
];
$tmp
.=
$txt
[++
$i
] ^
$md5
;
}
return
$tmp
;
}
//上面两个函数用到的公共函数
function
passport_key(
$txt
,
$encrypt_key
) {
$encrypt_key
= md5(
$encrypt_key
);
$ctr
= 0;
$tmp
=
''
;
for
(
$i
= 0;
$i
<
strlen
(
$txt
);
$i
++) {
$ctr
=
$ctr
==
strlen
(
$encrypt_key
) ? 0 :
$ctr
;
$tmp
.=
$txt
[
$i
] ^
$encrypt_key
[
$ctr
++];
}
return
$tmp
;
}
//----------------------------------------
//----------------------------------------
//-------------示例-----------------------
//----------------------------------------
//----------------------------------------
//
$str
=
'你好,我是+-!少林a b张三丰'
;
echo
'
------key:aaa----------
';
echo
$x
= passport_encrypt(
$str
,
'aaa'
);
//值会变,其中一个如下
//AOdS7lWlU+IM+1fnALBV5QOOV7dchQfEX+MCwgf2U3BXeQcnVuNavgPAA+hbmlLJAWEHIVRnD7hYvgf/U+lS4gCKUrdVvVO3
echo
'
-----------------------
';
echo
passport_decrypt(
$x
,
'aaa'
);
echo
'
';
echo
'
------key:bbb----------
';
echo
$y
= passport_encrypt(
$str
,
'bbb'
);
//值会变,其中一个如下
//Ae0F5gD1C+oB9wC/DOZZ6AeKU7MCjleWUbEAmFGuAi4JLF8gUeFW4lKQUrYBmlrAA2MHIVcxBrMFv1PzXOha5QGABb8A7Qu/
echo
'
-----------------------
';
echo
passport_decrypt(
$y
,
'bbb'
);
?>
//加解密字符串函数,可以加密中文
/*
//加密
echo $encode = authcode('爱迪生', 'ENCODE', '3'); //DvAHOdGFqa8xK4CDLnbr2mE
//解密
echo $decode = authcode($encode, 'DECODE', '3'); //爱迪生
//密钥
$auth_key = 34577;
参数:$string字符串,$operation加密还是解密,$key密钥
*/
function
authcode(
$string
,
$operation
,
$key
=
''
)
{
$key
= md5(
$key
?
$key
:
$GLOBALS
[
'auth_key'
]);
$key_length
=
strlen
(
$key
);
$string
=
$operation
==
'DECODE'
?
base64_decode
(
$string
) :
substr
(md5(
$string
.
$key
), 0, 8) .
$string
;
$string_length
=
strlen
(
$string
);
$rndkey
=
$box
=
array
();
$result
=
''
;
for
(
$i
= 0;
$i
<= 255;
$i
++) {
$rndkey
[
$i
] = ord(
$key
[
$i
%
$key_length
]);
$box
[
$i
] =
$i
;
}
for
(
$j
=
$i
= 0;
$i
< 256;
$i
++) {
$j
= (
$j
+
$box
[
$i
] +
$rndkey
[
$i
]) % 256;
$tmp
=
$box
[
$i
];
$box
[
$i
] =
$box
[
$j
];
$box
[
$j
] =
$tmp
;
}
for
(
$a
=
$j
=
$i
= 0;
$i
<
$string_length
;
$i
++) {
$a
= (
$a
+ 1) % 256;
$j
= (
$j
+
$box
[
$a
]) % 256;
$tmp
=
$box
[
$a
];
$box
[
$a
] =
$box
[
$j
];
$box
[
$j
] =
$tmp
;
$result
.=
chr
(ord(
$string
[
$i
]) ^
$box
[(
$box
[
$a
] +
$box
[
$j
]) % 256]);
}
if
(
$operation
==
'DECODE'
) {
if
(
substr
(
$result
, 0, 8) ==
substr
(md5(
substr
(
$result
, 8) .
$key
), 0, 8)) {
return
substr
(
$result
, 8);
}
else
{
return
''
;
}
}
else
{
return
str_replace
(
'='
,
''
,
base64_encode
(
$result
));
}
}
?>
-END-
声明:本文选自「 php中文网 」,搜索「 phpcnnew 」即可关注!
▼