前言,本来想给小程序做一些加解密功能的,供用户自己使用加密或者解密,然后呢,官方不给用,丢了也可惜,第一次发帖就放这吧
<?php
error_reporting(0);
$type=$_POST["type"];//加密的类型
$data=$_POST["data"];//内容
$key=$_POST["key"];//密钥
$is=$_POST["is"];//受否加密,1加密,0解密
$iv = '1234567890123456';//16位偏移量
switch ($type) {
case 'aes':
if($is=="1"){
$encrypted = aes128cbc_encrypt($data, $key, $iv);
jsonObj($encrypted);
}else{
$decrypted = aes128cbc_decrypt($data, $key, $iv);
jsonObj($decrypted);
}
break;
case 'base64':
if($is=="1"){
$ben=base64_encode_data($data);
jsonObj($ben);
}else{
$bde=base64_decode_data($data);
jsonObj($bde);
}
break;
case 'md5':
$md5=md5_hash($data);
jsonObj($md5);
break;
case 'sha1':
$s1=sha1_hash($data);
jsonObj($s1);
break;
case 'rc4':
if($is=="1"){
$ren=base64_encode_data(rc4($key, $data));
jsonObj($ren);
}else{
$rde=rc4($key,base64_decode($data));
jsonObj($rde);
}
break;
case 'unicode':
if($is=="1"){
jsonunicode($data);
}else{
jsonObj(json_decode("\"$data\""));
}
break;
default:
jsonObj('参数错误');
break;
}
//aes
function aes128cbc_encrypt($data, $key, $iv) {
$encrypted = openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
return base64_encode($encrypted);
}
function aes128cbc_decrypt($data, $key, $iv) {
$data = base64_decode($data);
$decrypted = openssl_decrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv);
return $decrypted;
}
//base64
function base64_encode_data($data) {
return base64_encode($data);
}
function base64_decode_data($data) {
return base64_decode($data);
}
//md5
function md5_hash($data) {
return md5($data);
}
//sha-1
function sha1_hash($data) {
return sha1($data);
}
//RC4
function rc4($key, $data) {
$s = array();
for ($i = 0; $i < 256; $i++) {
$s[$i] = $i;
}
$j = 0;
$length = strlen($key);
for ($i = 0; $i < 256; $i++) {
$j = ($j + $s[$i] + ord($key[$i % $length])) % 256;
$temp = $s[$i];
$s[$i] = $s[$j];
$s[$j] = $temp;
}
$i = 0;
$j = 0;
$res = "";
$datalen = strlen($data);
for ($k = 0; $k < $datalen; $k++) {
$i = ($i + 1) % 256;
$j = ($j + $s[$i]) % 256;
$temp = $s[$i];
$s[$i] = $s[$j];
$s[$j] = $temp;
$res .= chr(ord($data[$k]) ^ $s[($s[$i] + $s[$j]) % 256]);
}
return $res;
}
//返回一个json
function jsonObj($str){
$result = array('ty'=>"山河万卷",'data' =>$str);
$jsonstring = json_encode($result,JSON_UNESCAPED_UNICODE);
header('Content-Type: application/json;charset=utf-8');
echo $jsonstring;
exit(0);
}
//unicode特有输出
function jsonunicode($str){
$result = array('ty'=>"山河万卷",'data' =>$str);
$jsonstring = json_encode($result,JSON_HEX_TAG);
header('Content-Type: application/json;charset=utf-8');
echo $jsonstring;
exit(0);
}
下边是我的小程序,感兴趣可以看看