前段时间开发支付宝小程序遇到的问题,在这里记录一下,以后备用,建议在看下面内容之前先阅读这几篇文章了解一下对称加密和
openssl
1.问题
在开发支付宝小程序获取用户手机号功能的时候,解密接口返回的数据失败,支付宝官方 sdk 加密代码如下:
<?php
/**
* 加密工具类
*
* User: jiehua
* Date: 16/3/30
* Time: 下午3:25
*/
/**
* 加密方法
* @param string $str
* @return string
*/
function encrypt($str, $screct_key)
{
//AES, 128 模式加密数据 CBC
$screct_key = base64_decode($screct_key);
$str = trim($str);
$str = addPKCS7Padding($str);
//设置全0的IV
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC);
$iv = str_repeat("\0", $iv_size);
$encrypt_str = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $screct_key, $str, MCRYPT_MODE_CBC, $iv);
return base64_encode

本文记录了在开发支付宝小程序时遇到的解密问题,由于PHP环境中mcrypt函数系列已废弃,导致解密接口报错。通过分析加密方式(AES-128-CBC),了解到填充方式,并使用openssl_encrypt替换mcrypt_encrypt来解决问题。提供了修改后的代码片段。
3867

被折叠的 条评论
为什么被折叠?



