微信小程序des加密、PHP des解密 - Favour丶in

dongzhi1111 2021-08-13 原文


微信小程序des加密、PHP des解密


最近在做对小程序传输数据进行加密,加密方法有很多,使用的是des对称加密 采用的是CBC模式,

引用的插件为tripledes.js,https://github.com/Favour1111in/hello-world/tree/master

需要传入内容,密钥,初始化向量3个参数

var server = require(\'../../utils/server.js\');
var CryptoJS = require(\'../../utils/tripledes.js\');
Page({

  /**
   * 页面的初始数据
   */
  data: {
    val: \'\'
  },
  input(e) {
    var val = e.detail.value;
    this.encrypt(val);
  },
  encrypt(val) {
    var pwd = \'lib123123\';  //这里需要传入8个字节以上的密钥
    var iv = \'123123123\';
    var encryptData = this.encryptByDESModeCBCUtf8to64(val, pwd, iv);
    console.log(encryptData);
    this.setData({
      encryptData: encryptData
    })
    server.postJSON(\'Index/decrypt\', { data: encryptData, pwd: pwd, iv: iv }, function (res) {
      console.log(res);
    })
  },
  encryptByDESModeCBCUtf8to64(message, key, iv) {
    var keyHex = CryptoJS.enc.Utf8.parse(key);
    var ivHex = CryptoJS.enc.Utf8.parse(iv);
    var encrypted = CryptoJS.DES.encrypt(message, keyHex, {
      iv: ivHex,
      mode: CryptoJS.mode.CBC,
      padding: CryptoJS.pad.Pkcs7
    })
    return encrypted.ciphertext.toString(CryptoJS.enc.Base64);
  }
})

 

<view>
  <input style=\'border-bottom:1rpx solid #eaeaea\' bindblur=\'input\' placeholder=\'输入内容\'></input>
</view>
<view>{{encryptData}}</view>

输入内容,然后会进行des加密

 

后台使用的PHP进行des解密的,因为刚学PHP没多久,所以借鉴了网上的方法

public function decrypt(){
        $data=I(\'post.data\');
        $pwd=I(\'post.pwd\');
        $iv=I(\'post.iv\');
        $encrypted = base64_decode($data); //如需转换二进制可改成 bin2hex 转换
        $key = str_pad($pwd,8,\'0\'); //3DES加密将8改为24
        $td = mcrypt_module_open(MCRYPT_DES,\'\',MCRYPT_MODE_CBC,\'\');//3DES加密将MCRYPT_DES改为MCRYPT_3DES
        if( $iv == \'\' )
        {
            $iv = @mcrypt_create_iv (mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
        }
        @mcrypt_generic_init($td, $key, $iv);
        $decrypted = mdecrypt_generic($td, $encrypted);
        mcrypt_generic_deinit($td);
        mcrypt_module_close($td);
        $y=$this->pkcs5_unpad($decrypted);
        $this->ajaxReturn($y);
    }
    function pkcs5_unpad($text){
        $pad = ord($text{strlen($text)-1});
        if ($pad > strlen($text)) {
            return false;
        }
        if (strspn($text, chr($pad), strlen($text) - $pad) != $pad){
            return false;
        }
        return substr($text, 0, -1 * $pad);
    }

最终前端获取的结果就是加密输入的内容

 

在这里,我遇到过一个小问题,就是mcrypt_module_open函数使用不了,开始网上找了很多方法,有去掉extension前面分号的,

还有就是下载php_mcrypt.dll和libmcrypt.dll,都没有成功,最终结果还是因为phpstrom版本太高,这个函数在最新版本不兼容,

所以如果有类似小伙伴遇到mcrypt_module_open函数不能用的情况下,看下编辑器版本是否过高

 

发表于
2018-06-29 18:37 
Favour丶in 
阅读(789
评论(0
编辑 
收藏 
举报

 

版权声明:本文为dongzhi1111原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/dongzhi1111/p/9244461.html

微信小程序des加密、PHP des解密 - Favour丶in的更多相关文章

  1. 解决方案:ppt打不开,显示发现文件中的内容有问题。可尝试修复此演示文稿 – 白杨-M

    解决方案:ppt打不开,显示发现文件中的内容有问题。可尝试修复此演示文稿  ppt打不开,显示发现文件中的内容 […]...

  2. Oracle数据库的备份与恢复 – 笨笨

    Oracle数据库的备份与恢复 Oracle数据库的备份与恢复 当我们使用一个数据库时,总希望数据库的内容是可 […]...

  3. 代码神器Atom,最常用的几大插件,你值得拥有。 – 魔洁

    代码神器Atom,最常用的几大插件,你值得拥有。 作者:魔洁 atom常用插件 atom插件安装File> […]...

  4. Note(2): 一个JavaScript的贷款计算器

    抽时间对照着案例撸了一遍,学到了蛮多东西,也有很多疑问,其中有个疑问仍是没有撸明白 graph.width = […]...

  5. yolov3.cfg参数说明及调参经验 – strangeman

    yolov3.cfg参数说明及调参经验 对代码中配置文件yolov3.cfg部分解释: # Testing(此 […]...

  6. eclipse快捷键整理 – 适AT

    eclipse快捷键整理 编辑 Ctrl+1 快速修复(最经典的快捷键,就不用多说了,可以解决很多问题,比如i […]...

  7. 无线路由器怎么设置 – 凝视天涧

    无线路由器怎么设置 无线路由器怎么设置 最优化 WIFI最稳定        很多朋友买了无线路由器,因为没有 […]...

  8. 源码分析MySQL mysql_real_query函数 – -见

    源码分析MySQL mysql_real_query函数 目录 目录 1 1. 前言 1 2. 调用路径 2 […]...

随机推荐

  1. Mego(05) – Mego for Visual Studio Extension

    前言 可能对于一个新的框架而言使用入门对于陌生人而言是比较困难的,因此为了最大限度的为使用者提供便利性,我们给 […]...

  2. springboot集成redis

      2019-08-13 一直想在springboot上集成带缓存的redis,终于成功了。网上有1000种写 […]...

  3. 来自百度贴吧的练习题 :求最长单词的长度和最短单词的长度。

      In the function ex5 write code that will input a line […]...

  4. ExtJs 实现快速清空输入框的值

    如图↑:要求点击“取消”或“确定”的时候清空该表单中的所有输入框的值,即设所有 input 标签的 value […]...

  5. Netflix Ribbon源码设计错误的证据(附正确实例)

    Netflix Ribbon源码设计错误的证据(附正确实例)   我在之前一篇博客里https://www.c […]...

  6. IOS 公司开发者账号申请详细教程

        谈到苹果开发者账号,我们需要区分一下个人账号、公司账号和企业账号这三种,还有一种是教育账号,这个就不多 […]...

  7. [WebApp开发]基础教程-Web App开发入门

    WebApp与Native App有何区别呢? Native App: 1、开发成本非常大。一般使用的开发语言 […]...

  8. odoo:开源 ERP/CRM 入门与实践

    看了这张图,或许你对odoo有了一些兴趣。 这次就是和大家一起交流开源ERP/CRM系统:odoo 对以下读者 […]...

展开目录

目录导航