php实现了一些常用的加解密方法

前言,本来想给小程序做一些加解密功能的,供用户自己使用加密或者解密,然后呢,官方不给用,丢了也可惜,第一次发帖就放这吧

<?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);
}

下边是我的小程序,感兴趣可以看看

fd858d2116f140c0ba5b984a32579a1c.png

 

545c3cdc1fd04482b6099133ecce3133.png

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值