微信小程序php如何解密,微信小程序des加密、PHP des解密

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

需要传入内容,密钥,初始化向量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

})returnencrypted.ciphertext.toString(CryptoJS.enc.Base64);

}

})

{{encryptData}}

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

4d5159be6c3ca15225ce1aafff5fc2de.png

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

public functiondecrypt(){$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);

}

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

b355f2641498549e852f144e09f28ec0.png

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

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

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值