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
MYSQL数据库初学者使用指南
Nov 16 PHP
解析:php调用MsSQL存储过程使用内置RETVAL获取过程中的return值
Jul 03 PHP
php根据日期判断星座的函数分享
Feb 13 PHP
destoon文章模块调用企业会员资料的方法
Aug 22 PHP
php 模拟 asp.net webFrom 按钮提交事件实例
Oct 13 PHP
PHP实现扎金花游戏之大小比赛的方法
Mar 10 PHP
Codeigniter检测表单post数据的方法
Mar 21 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
Dec 31 PHP
Linux下编译redis和phpredis的方法
Apr 07 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
Nov 20 PHP
thinkphp5框架扩展redis类方法示例
May 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
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
使用Apache的htaccess防止图片被盗链的解决方法
2013/04/27 PHP
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
php微信公众账号开发之前五个坑(一)
2016/09/18 PHP
使用Zttp简化Guzzle 调用
2017/07/02 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
2019/12/12 PHP
让innerHTML的脚本也可以运行起来
2006/07/01 Javascript
使弱类型的语言JavaScript变强势
2009/06/22 Javascript
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
js比较日期大小的方法
2015/05/12 Javascript
IE7浏览器窗口大小改变事件执行多次bug及IE6/IE7/IE8下resize问题
2015/08/21 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
微信小程序 location API实例详解
2016/10/02 Javascript
基于Vuejs框架实现翻页组件
2020/06/29 Javascript
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
[03:49]DOTA2 2015国际邀请赛中国区预选赛第二日现场百态
2015/05/27 DOTA
[02:09]EHOME夺得首届辉夜杯冠军—现场颁奖仪式
2015/12/28 DOTA
解决谷歌搜索技术文章时打不开网页问题的python脚本
2013/02/10 Python
Python简单日志处理类分享
2015/02/14 Python
python中getaddrinfo()基本用法实例分析
2015/06/28 Python
Python实现模拟登录及表单提交的方法
2015/07/25 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
pytorch 更改预训练模型网络结构的方法
2019/08/19 Python
Anconda环境下Vscode安装Python的方法详解
2020/03/29 Python
python转化excel数字日期为标准日期操作
2020/07/14 Python
详解python程序中的多任务
2020/09/16 Python
最新pycharm安装教程
2020/11/18 Python
手机配件第一品牌:ZAGG
2017/05/28 全球购物
2014收银员工作总结范文
2014/12/16 职场文书
丽江古城导游词
2015/02/03 职场文书
2015年度党员个人总结
2015/02/14 职场文书
村级干部党员公开承诺事项
2015/05/04 职场文书
实习感想范文
2015/08/10 职场文书
《社戏》教学反思
2016/02/22 职场文书
go语言使用Casbin实现角色的权限控制
2021/06/26 Golang