跳转到主内容
极星编程网:以代码为星,赴技术山海!

PHP对接java的AES/ECB/PKCS5Padding加密方式的示例代码(图)

因项目需要,要和一家保险公司对接调用 api ,我公司是 php 后台,保险公司是 java 后台,中间的数据传输就避免不了要加密、解密了,目前通行的加密aes比较推荐。 对接的过程中,就难免要翻山越水的了, 下面是我对接公司的加密说明: 一定要屡清楚自己的加密方式,否则一个加密模式ECB、CBC的差别,结果就千差万别的。 立即学习 “ PHP免费学习笔记(深入) ”; 附上最终能使用的代码: PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载
'; // echo Security::decrypt($value, $key );
公共 函数 中调用:
/** * request body加密 * @param array $content 投保人的信息 * @return string */ function hetai_encrypt($content) { // 方案七 print_r("\r\n"); vendor('encrypt.Security') or die("方案7引入失败"); $sec = new \Security(); $string = $content; $sec_res = $sec->encrypt($string, base64_decode("eeSvvVtUDLi5lTBHDjCeFw==")); $sec_res = strToHex($sec_res);// 结果转16进制并转成大写 // 这里做了好几次的转换 // 只是为了迎合出来我需要的结果而已 // 根据自己的加密要求来定 $encrypt_upper = strToHex(base64_decode(hexToStr($sec_res))); var_dump("\r\n方案7加密的结果\r\n" . $encrypt_upper); // 解密 $sec_res_lower = strtolower($sec_res);// 转小写 $sec_res_lower_tostr = hexToStr($sec_res);// 16进制转成string $sec_dec = $sec->decrypt($sec_res_lower_tostr, base64_decode("eeSvvVtUDLi5lTBHDjCeFw==")); var_dump("\r\n方案7解密的结果\r\n" . $sec_dec); return $encrypt_upper; }
二进制 字符串 转16进制、16进制字符串转二进制:
/** * 字符串转十六进制 * @param string $string * @return string */ function strToHex($string) { $hex=""; for($i=0;$i
附上折磨我三天的加密功能块,仅供自己作提醒之用,不喜勿喷~

相关文章