• aes加密 js和php数据传递


    必须先确定js与php两边的加密模式、秘钥,否则不能相互解开。

    php加密:

    function encrypt($data='hello,axl'){

    $screct_key = '1234567899876543';//必须是16、24、32位

    $str = $screct_key;

    $iv =mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC),MCRYPT_RAND);

    $encrypt_str = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_CBC, $screct_key);//这一步确定机密模式为128位cbc模式MCRYPT_RIJNDAEL_128,MCRYPT_MODE_CBC;

    return base64_encode($encrypt_str);//可不用base64_encode,不用$encrypt_str为乱码,但是解密过后不影响。如果需要查看最好使用base64
    }

    php解密:

    function decrypt($str){
    $screct_key = '1234567899876543';
    $str = base64_decode($str);
    $iv = $screct_key ;
    $encrypt_str = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_CBC, $screct_key);
    $encrypt_str = trim($encrypt_str);
    return $encrypt_str;

    }

    js加密:

    //需要的js文件

    <script src="./rollups/aes.js"></script>;
    <script src="./components/pad-zeropadding.js"></script>;

    加密
    function jsencrypt(str){
    var key='1234567899876543';
    var iv=key;
    var mi=CryptoJS.AES.encrypt(str,key,{iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding});
    return result;
    }

    解密
    function jsdecrypt(str){
    var key='1234567899876543';
    var iv=key;
    var result=CryptoJS.AES.decrypt(str,key,{iv:iv,mode:CryptoJS.mode.CBC,padding:CryptoJS.pad.ZeroPadding}).toString(CryptoJS.enc.Utf8);//确定解密编码CryptoJS.enc.Utf8,必须与php编码一直不然乱码
    return result;
    }

    使用jquery传值发现不能对数组加密只能单个加密。且连接时需要加引号。

    function userLogin(name,pass){

      var name=jsencrypt(name);
      var pass=jsencrypt(pass);
      $.ajax({
        type:"POST",
        url:"./login",
        data: {"name":"'"+name+"'","pass":"'"+pass+"'"},//此处需用引号将加密后的东西括起来,否则会报Uncaught RangeError: Maximum call stack size exceeded,不知道是我js的问题还是我的aes包的问题,推断应该是jquery文件问题。
        success:function(msg){
          alert(msg);
        },
      error: function() {
        alert('error);
      },
    })
    }

  • 相关阅读:
    Git在商业项目中的使用流程
    EventBus中观察者模式的应用
    作业三——安卓系统文件助手APP原型设计
    视频剪辑软件的调研——万兴神剪手、视频编辑王、爱剪辑
    18-10-31 Scrum Meeting 3
    myapp——自动生成小学四则运算题目的命令行程序(侯国鑫 谢嘉帆)
    一个「学渣」从零开始的Web前端自学之路
    Vue一个案例引发「内容分发slot」的最全总结
    Vue CLI 3.0脚手架如何在本地配置mock数据
    Vue一个案例引发「动画」的使用总结
  • 原文地址:https://www.cnblogs.com/axl-study/p/4819573.html
Copyright © 2020-2023  润新知