首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >crypto加密:后端PHP加密,前端JS解密

crypto加密:后端PHP加密,前端JS解密

原创
作者头像
conanma
发布2022-03-12 10:50:07
发布2022-03-12 10:50:07
11K00
代码可运行
举报
文章被收录于专栏:正则正则
运行总次数:0
代码可运行

使用cdn加载:

代码语言:javascript
代码运行次数:0
运行
复制
https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js

但有时build上传到服务器,浏览器加载不了cdn地址,可以另存为上传到自家服务器上。

在项目build文件夹下找到webpack.base.conf,配置CryptoJS

JS端:

string 要加密/解密的字符串

code 秘钥字符串

operation 默认false表示加密,传入true表示解密

代码语言:javascript
代码运行次数:0
运行
复制
 // 加密解密方法:string-需要解密的字段  code-约定的密钥    operation 默认false表示加密,传入true表示解密
    secret (string, code, operation) {
      code = CryptoJS.MD5(code).toString()
      var iv = CryptoJS.enc.Utf8.parse(code.substring(0, 16))
      var key = CryptoJS.enc.Utf8.parse(code.substring(16))
      if (operation) {
        return CryptoJS.AES.decrypt(string, key, {
          iv: iv,
          padding: CryptoJS.pad.Pkcs7
        }).toString(CryptoJS.enc.Utf8)
      }
      return CryptoJS.AES.encrypt(string, key, {
        iv: iv,
        mode: CryptoJS.mode.CBC,
        padding: CryptoJS.pad.Pkcs7
      }).toString()
    },

注意:如果需要将加密的字符串在网址中传递,使用encodeURIComponent(str)函数转码即可。

PHP端:

$string 要加密/解密的字符串

$code 秘钥字符串

$operation 默认false表示加密,传入true表示解密

代码语言:javascript
代码运行次数:0
运行
复制
    function secret($string,$code,$operation=false){
        $code = md5($code);
        $iv = substr($code,0,16);
        $key = substr($code,16);
        if($operation){
            return openssl_decrypt(base64_decode($string),"AES-128-CBC",$key,OPENSSL_RAW_DATA,$iv);
        }
        return base64_encode(openssl_encrypt($string,"AES-128-CBC",$key,OPENSSL_RAW_DATA,$iv));
    }

注意:本函数支持php到7+ ,同时兼容5.6.33(已测试通过的版本) 。如果需要将加密的字符串在网址中传递,使用urlencode($str)函数转码即可。

案例: PHP后端加密:

代码语言:javascript
代码运行次数:0
运行
复制
    public function index(){
        $string = 'hello world';
        $code = 'abcedfg';
        $str = $this->secret($string,$code);
        return urlencode($str);
    }

JS前端解密:

代码语言:javascript
代码运行次数:0
运行
复制
    var $string = '页面已存在的密文';
    var $code = 'abcedfg';
    var string = secret($string,$code,true);
    console.log(string);

备注:为了避免暴力破解,$code要设置得足够复杂。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档