php之Aes加密案例讲解

admin3年前PHP教程65

在项目中,尤其是pc端的时候,我们在用户登录后会给前端返回一个标识,来判断用户是否登录,这个标识大多数都是用户的id

​                                       ​

但是这里存在很大的弊端,那就是这个值可以修改,假如说把我这个值一修改,我就可以获取到修改的用户的所有信息,可怕吧!

那么今天就使用aes进行加密处理一下


<?php
namespace app\api\controller;
 
/**
 * aes 加密 解密类库
 * class aes
 * @package app\common\lib
 */
class aes {
 
    private $key = null;
 
    /**
     *
     * @param $key      密钥
     * @return string
     */
    public function __construct() {
        // 需要小伙伴在配置文件app.php中定义aeskey
        $this->key = '1234567891112121';
    }
 
    /**
     * 加密
     * @param string input 加密的字符串
     * @param string key   解密的key
     * @return hexstring
     */
    public function encrypt($input = '') {
        $size = mcrypt_get_block_size(mcrypt_rijndael_128, mcrypt_mode_ecb);
        $input = $this->pkcs5_pad($input, $size);
        $td = mcrypt_module_open(mcrypt_rijndael_128, '', mcrypt_mode_ecb, '');
        $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), mcrypt_rand);
        mcrypt_generic_init($td, $this->key, $iv);
 
        $data = mcrypt_generic($td, $input);
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td);
        $data = base64_encode($data);
 
        return $data;
 
    }
    /**
     * 填充方式 pkcs5
     * @param string text        原始字符串
     * @param string blocksize   加密长度
     * @return string
     */
    private function pkcs5_pad($text, $blocksize) {
        $pad = $blocksize - (strlen($text) % $blocksize);
        return $text . str_repeat(chr($pad), $pad);
    }
 
    /**
     * 解密
     * @param string input 解密的字符串
     * @param string key   解密的key
     * @return string
     */
    public function decrypt($sstr) {
        $decrypted= mcrypt_decrypt(mcrypt_rijndael_128,$this->key,base64_decode($sstr), mcrypt_mode_ecb);
        $dec_s = strlen($decrypted);
        $padding = ord($decrypted[$dec_s-1]);
        $decrypted = substr($decrypted, 0, -$padding);
 
        return $decrypted;
    }
 
}


这是一个aes的工具类。注意一下,这个值需要我们来自改,而且是16位

​                                           ​

这样我们用户在登录时会把id返回给前端

首先在控制器引入

​                                           ​

然后进行实例化

​                                           ​

用户在登录成功后我们把这个值给加密返回前端

​                                           ​

这个u_id就是加密后的值

​                                           ​

然后我们在comment文件设置这俩个方法,这俩个方法是对参数进行统一处理,那么我么那就在这里判断一下,凡是用到用户id的接口把用户id进行解密即可

​                                           ​

到此这篇关于php之aes加密案例讲解的文章就介绍到这了,更多相关php之aes加密内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

为什么说PHP是很糟糕的,也是很好的编程语言

PHP 又是一门相当奇怪的编程语言。当人们抱怨这门语言“很槽糕”时,他们并没有说错。这门语言确实有很多不好的地方。搁在以前,这门语言还有更多糟糕的问题。嘲笑 PHP 的博文《全面解析 PHP 的槽糕设...

php中trim函数实例用法

我们在编写代码的时候,会遇到需要去除字符串的空格情况,这个时候,就需要用到函数才可以实现,在php中有一个函数系列是专门提供使用的,这就是trim函数,其中系统中ltrim函数可以实现去掉字符串首部字...

高性能的江苏BGP高防服务器租用怎么选择

高性能的江苏BGP高防服务器租用怎么选择?选择江苏地区的高性能BGP高防服务器租用需要考虑以下因素:1.优质的机房设施:选择机房设施完善,网络设备先进,机器配置高端的正规机房,能够提供更加稳定的网络环...

东南亚服务器为什么这么受欢迎

东南亚服务器受欢迎的原因如下:地理位置优势:东南亚离中国、日本、韩国和澳大利亚等地都比较近,而且区域内国家较多,人口数量众多,这为跨境业务拓展提供了很大的机会。更快的网站速度:使用东南亚服务器可以有效...

德国服务器延迟高怎么解决

德国服务器延迟高怎么解决?如果您的计算机连接到德国服务器时遇到延迟高的问题,以下是一些解决问题的方法:更换服务器:如果您连接到的服务器受到过载或网络故障,可能会导致延迟增加。尝试更换其他可用的德国服务...

租用泉州高防服务器时应该注意的问题

租用泉州高防服务器时应该注意的问题?在租用泉州高防服务器时,以下是一些应该注意的问题:选择合适的服务器规格:不同规格的高防服务器价格和性能都有所不同。您应该根据自己的需求选择合适的服务器规格。选择可靠...