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 相关文章推荐
提升PHP执行速度全攻略(上)
Oct 09 PHP
PHP Token(令牌)设计
Mar 15 PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
Feb 28 PHP
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
Jun 03 PHP
PHP多文件上传类实例
Mar 07 PHP
PHP加密解密函数详解
Oct 28 PHP
深入理解PHP内核(二)之SAPI探究
Nov 10 PHP
Symfony学习十分钟入门经典教程
Feb 03 PHP
关于php 高并发解决的一点思路
Apr 16 PHP
ajax调用返回php接口返回json数据的方法(必看篇)
May 05 PHP
PHP实现转盘抽奖算法分享
Apr 15 PHP
php使用filter_var函数判断邮箱,url,ip格式示例
Jul 06 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安装攻略:常见问题解答(二)
2006/10/09 PHP
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
2008/12/06 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
php mongodb操作类 带几个简单的例子
2016/08/25 PHP
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
40款非常棒的jQuery 插件和制作教程(系列一)
2011/10/26 Javascript
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
2011/12/20 Javascript
jquery实现的带缩略图的焦点图片切换(自动播放/响应鼠标动作)
2013/01/23 Javascript
JQuery中如何传递参数如click(),change()等具体实现
2013/04/28 Javascript
jquery中获得元素尺寸和坐标的方法整理
2014/05/18 Javascript
node.js中使用socket.io制作命名空间
2014/12/15 Javascript
jquery实现鼠标滑过小图查看大图的方法
2015/07/20 Javascript
纯javascript实现分页(两种方法)
2015/08/26 Javascript
基于jQuery下拉选择框插件支持单选多选功能代码
2016/06/07 Javascript
VUEJS实战之利用laypage插件实现分页(3)
2016/06/13 Javascript
JS获取地址栏参数的两种方法(简单实用)
2016/06/14 Javascript
20分钟打造属于你的Bootstrap站点
2016/07/27 Javascript
Vue.js 利用v-for中的index值实现隔行变色
2018/08/01 Javascript
小程序如何写动态标签的实现方法
2020/02/05 Javascript
JavaScript实现指定数量的并发限制的示例代码
2020/03/10 Javascript
vue实现学生信息管理系统
2020/05/30 Javascript
python改变日志(logging)存放位置的示例
2014/03/27 Python
利用 python 对目录下的文件进行过滤删除
2017/12/27 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
Keras SGD 随机梯度下降优化器参数设置方式
2020/06/19 Python
利用python清除移动硬盘中的临时文件
2020/10/28 Python
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
eBay意大利购物网站:eBay.it
2019/09/04 全球购物
Made in Design德国:设计师家具、灯具和装饰
2019/10/31 全球购物
考试保密承诺书
2014/08/30 职场文书
2015年元旦晚会活动总结(学生会)
2014/11/28 职场文书
2014年加油站工作总结
2014/12/04 职场文书
承诺函格式模板
2015/01/21 职场文书
2015年学校少先队工作总结
2015/07/20 职场文书
快消品行业营销模式与盈利模式分享
2019/09/27 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs