php接口数据加密、解密、验证签名


Posted in PHP onMarch 12, 2015

代码很简单,这里就不多废话了,直接奉上代码

<?php

//header('Content-Type: text/xml; charset=utf-8');

include_once(dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.'phpsec'.DIRECTORY_SEPARATOR.'Math'.DIRECTORY_SEPARATOR.'BigInteger.php');

include_once(dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.'phpsec'.DIRECTORY_SEPARATOR.'Crypt'.DIRECTORY_SEPARATOR.'AES.php');

include_once(dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.'phpsec'.DIRECTORY_SEPARATOR.'Crypt'.DIRECTORY_SEPARATOR.'RSA.php');

//密文

$crypttext = 'v66YKULHFld2JElhm/J9qik2Edr1JHdZIc/k/OesU2GbTX2usXyvF4jGvzvoihrrE8FsfKmllmjsMIjO5fdrS/FD20bYFii4JW3BO3bzshXmz6AEs2DWwG4sK9mNojfOC0IsMoV311X5/JlgUoQXkDy4F5HHpYE9d/xGb0g2XE/hnGSSy2cpQcvQtBlBmixwSckNhsEG92lovlOz8ULwkqG5o7x+qB7P/EMII/WaFAXBJXDXvZX7lmGcOgon6wLhKJLGXorP6BIxOg6LGc6Ux7BAt3i9+0lujNgxIq/sDsl23hsr3yOUpV5C5a813nrHx4HJyd/hBT1UvIUml+eTmJwWCpSfs2cvxIUr0CE57JAZVyXjK13shK3IsZHLPPsm/JcDCrdy0Co/d5uIGJAdzXdsQ56xsju+tlvnA1J6yq2tDIfYK/x6k911A5WXLKYxztD1nq+bTYN3Gv/WFfrzVtgWQBrh06ihS2cwvna0S9EV/YPmhnAjJmrX4trNr9NXQ9xaZaW4lGRg87U5QDV+nQjj1THk0XHFc69N9g2+DsAGyEs9tK6U0ZQ72hJZqZhBCDH1UKw0PLyIhJdxpgPPOWGp8/QVVU2julTeKunvgAAEc3n+GoZfqjsCDi1S6T2MTnjWYWNoFRBhvEZFD/revgpasTOzDQa5NqR1B+mUF70r6uw6MWLJ7cT9Tz3jq+CA';

$aeskey = base64_decode('qZe60QZFxuirub2ey4+7+Q==');

//AES解密,采用ECB模式

$aes = new Crypt_AES(CRYPT_MODE_ECB);

//设置AES密钥

$aes->setKey($aeskey);

//解密AES密文

$plaintext = $aes->decrypt(base64_decode($crypttext));

echo $plaintext;

echo '<hr />';

//AES加密明文

//echo $aes->encrypt($plaintext);

//rsa公钥

$publickey = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCffOeIVYut9jW5w1L5uKX4aDvd837a8JhaWm5S8YqNQfgEmfD9T+rDknXLqMT+DXeQAqGo4hBmcbej1aoMzn6hIJHk3/TfTAToNN8fgwDotHewsTCBbVkQWtDTby3GouWToVsRi1i/A0Vfb0+xM8MnF46DdhhrnZrycERBSbyrcwIDAQAB';

//echo base64_decode($publickey);

//rsa签名

$signature = 'XHin4uUFqrKDEhKBD/hQisXLFFSxM6EZCvCPqnWCQJq3uEp3ayxmFuUgVE0Xoh4AIWjIIsOWdnaToL1bXvAFKwjCtXnkaRwUpvWrk+Q0eqwsoAdywsVQDEceG5stas1CkPtrznAIW2eBGXCWspOj+aumEAcPyYDxLhDN646Krzw=';

//echo base64_decode($signature);

$rsa = new Crypt_RSA();

//设置RSA签名模式 CRYPT_RSA_SIGNATURE_PSS or CRYPT_RSA_SIGNATURE_PKCS1

$rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1);

//var_dump($rsa->createKey());

//生成RSA公钥、私钥

//extract($rsa->createKey());

//使用RSA私钥生成签名

//$rsa->loadKey($privatekey);

//$signature = $rsa->sign($plaintext);

//使用RSA公钥验证签名

echo $plaintext;

$rsa->loadKey(base64_decode($publickey));

echo $rsa->verify($plaintext, base64_decode($signature)) ? 'verified' : 'unverified';

echo '<hr />';

//生成RSA公钥、私钥

//var_dump($rsa->createKey());

extract($rsa->createKey());

//使用RSA私钥加密数据

$rsa->loadKey($privatekey);

$ciphertext = $rsa->encrypt($plaintext);

//使用RSA公钥解密数据

$rsa->loadKey($publickey);

echo $rsa->decrypt($ciphertext);

以上就是本文所述的全部内容了,希望本代码能给大家学习php加密解密能够带来些帮助。

PHP 相关文章推荐
模拟OICQ的实现思路和核心程序(三)
Oct 09 PHP
php5.2.0内存管理改进
Jan 22 PHP
PHP与MongoDB简介|安全|M+PHP应用实例详解
Jun 17 PHP
PHP mail()函数使用及配置方法
Jan 14 PHP
php去除html标记的原生函数详解
Jan 27 PHP
PHP MYSQL简易交互式站点开发
Dec 27 PHP
php 常用的系统函数
Feb 07 PHP
visual studio code 调试php方法(图文详解)
Sep 15 PHP
PHP学习笔记之session
May 06 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
Jun 04 PHP
PHP 实现文件压缩解压操作的方法
Jun 14 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
Oct 20 PHP
php查询相似度最高的字符串的方法
Mar 12 #PHP
PHP实现通用alert函数的方法
Mar 11 #PHP
PHP获取ip对应地区和使用网络类型的方法
Mar 11 #PHP
javascript+php实现根据用户时区显示当地时间的方法
Mar 11 #PHP
PHP读取txt文本文件并分页显示的方法
Mar 11 #PHP
php中有关合并某一字段键值相同的数组合并的改进
Mar 10 #PHP
php模拟服务器实现autoindex效果的方法
Mar 10 #PHP
You might like
php计算两个文件相对路径的方法
2015/03/14 PHP
PHP按一定比例压缩图片的方法
2018/10/12 PHP
JavaScript 中的replace方法说明
2007/04/13 Javascript
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
javascript 主动派发事件总结
2011/08/09 Javascript
jQuery实现长文字部分显示代码
2013/05/13 Javascript
javascript实现的弹出层背景置灰-模拟(easyui dialog)
2013/12/27 Javascript
jQuery+ajax实现实用的点赞插件代码
2016/07/06 Javascript
jQuery弹出层插件popShow用法示例
2017/01/23 Javascript
JavaScript实现弹出广告功能
2017/03/30 Javascript
NestJs 静态目录配置详解
2019/03/12 Javascript
vue 使用高德地图vue-amap组件过程解析
2019/09/07 Javascript
关于layui时间回显问题的解决方法
2019/09/24 Javascript
JavaScript遍历数组的方法代码实例
2020/01/14 Javascript
多页vue应用的单页面打包方法(内含打包模式的应用)
2020/06/11 Javascript
解决Nuxt使用axios跨域问题
2020/07/06 Javascript
[57:18]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#3VP VS VG
2016/03/03 DOTA
python实现百度关键词排名查询
2014/03/30 Python
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
Python多线程编程(一):threading模块综述
2015/04/05 Python
Python中的列表知识点汇总
2015/04/14 Python
Python中max函数用法实例分析
2015/07/17 Python
浅谈Python爬取网页的编码处理
2016/11/04 Python
Python基于回溯法子集树模板解决马踏棋盘问题示例
2017/09/11 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
python使用Pandas库提升项目的运行速度过程详解
2019/07/12 Python
CSS3制作翻转效果_动力节点Java学院整理
2017/07/11 HTML / CSS
白俄罗斯女装和针织品网上商店:Presli.by
2019/10/13 全球购物
电子商务专业毕业生工作推荐信
2013/11/17 职场文书
幼儿园托班开学寄语
2014/01/18 职场文书
英语复习计划
2015/01/19 职场文书
困难补助申请报告
2015/05/19 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
八年级作文之我的母亲
2019/12/10 职场文书
golang json数组拼接的实例
2021/04/28 Golang
深入探讨opencv图像矫正算法实战
2021/05/21 Python