佛山响应式网站公司,厦门seo结算,江门网站建设电话,建设银行网银网站接口文档 文档给过来的案例是java程序的#xff0c;参照其思路#xff0c;造一个php版本
构造aes对称加密 public static function encry($data){$data 要加密的数据;$key 你的256位密钥; // 密钥应该是16字节#xff08;128位#xff09;#xff0c;24字节…接口文档 文档给过来的案例是java程序的参照其思路造一个php版本
构造aes对称加密 public static function encry($data){$data 要加密的数据;$key 你的256位密钥; // 密钥应该是16字节128位24字节192位或32字节256位$method AES-256-CBC;// $iv openssl_random_pseudo_bytes(openssl_cipher_iv_length($method)); // 生成随机IV$iv ;// PKCS5Padding 补齐数据$padding 16 - (strlen($data) % 16);$data . str_repeat(chr($padding), $padding);// 使用 CBC 模式加密$encrypted openssl_encrypt($data, method, $key, OPENSSL_RAW_DATA|OPENSSL_ZERO_PADDING, $iv);// 进行 base64 编码return base64_encode($encrypted);}
参考了以下文章 今天在做一个和java程序接口的架接java那边需要我这边(PHP)对传过去的值进行AES对称加密接口返回的结果也是加密过的就要用到解密然后试了很多办法也一一对应了AES的key密钥值偏移量IV的值都还是不能和java加密解密的结果一样我很郁闷我很焦躁。接着我就去找了一些文档结果发现PHP里面补码方式只有ZeroPadding这一种方式而java接口那边是用PKCS5Padding补码方式发现了问题所在就编写了如下PHP实现AES/CBC/PKCS5Padding的加密解密方式。如有错误还请指正下面贴出详细代码 原文参考链接https://www.cnblogs.com/caicaizi/p/7852551.html 构造请求参数 public function d(){$sql 查询数据的sql语句;$row self::db3()-query($sql);if(!$row) $this-error(没有需要同步的数据);$array [];$ids [];foreach ($row as $val) {$ids[] $val[ID];$arr [];$arr[naming] $val[姓名];$arr[phone] $val[手机];if(strlen($val[身份证]) ! 18) continue;$arr[idcard] $val[身份证];$arr[actNaming] 大湾区汽车周;$arr[entryTime] $val[入场时间];$arr[appointmentTime] $val[预约日期];$array[] $arr;}$array self::encry(json_encode($array,JSON_UNESCAPED_UNICODE));$data [pushType1, persons$array];$data json_encode($data,JSON_UNESCAPED_UNICODE);//发送一个POST请求并设置Content-Type并获取返回结果$result \fast\Http::post(http://120.234.34.7:13305/person/compare, $data, [CURLOPT_TIMEOUT 30, CURLOPT_HTTPHEADER [Content-Type: application/json,keyt: fbb1cd7c7d4a45609cf11a8c934311c0]]);// dump($result);exit;$res json_decode($result);if($res-success){$message $res-message;// 成功后的逻辑$ids implode(,,$ids);$sql update [data_time] SET 是否同步公安1 WHERE id IN ($ids);// dump($sql);$update self::db3()-execute($sql);// dump($update);$this-success($message);}else{$this-error();}}