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 相关文章推荐
在PHP3中实现SESSION的功能(一)
Oct 09 PHP
Mysql数据库操作类( 1127版,提供源码下载 )
Dec 02 PHP
php中通过虚代理实现延迟加载的实现代码
Jun 10 PHP
PHP验证码函数代码(简单实用)
Sep 29 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
Oct 22 PHP
ThinkPHP 404页面的设置方法
Jan 14 PHP
PHP批量去除BOM头代码分享
Jun 26 PHP
ThinkPHP项目分组配置方法分析
Mar 23 PHP
php的api数据接口书写实例(推荐)
Sep 22 PHP
PHP面向对象程序设计之类与反射API详解
Dec 02 PHP
php实现通过soap调用.Net的WebService asmx文件
Feb 27 PHP
PHP 进度条函数的简单实例
Sep 19 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下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
PHP $_SERVER详解
2009/01/16 PHP
PHP 存储文本换行实现方法
2010/01/05 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
PHP中的self关键字详解
2019/06/23 PHP
解析javascript 浏览器关闭事件
2013/07/08 Javascript
使用Js让Html中特殊字符不被转义
2013/11/05 Javascript
jquery+css3打造一款ajax分页插件(自写)
2014/06/18 Javascript
AspNet中使用JQuery上传插件Uploadify详解
2015/05/20 Javascript
如何使用PHP+jQuery+MySQL实现异步加载ECharts地图数据(附源码下载)
2016/02/23 Javascript
基于BootStrap环境写jQuery tabs插件
2016/07/12 Javascript
JavaScript的new date等日期函数在safari中遇到的坑
2016/10/24 Javascript
JS实现多张图片预览同步上传功能
2017/06/23 Javascript
Element-Ui组件 NavMenu 导航菜单的具体使用
2019/10/24 Javascript
Vuex实现数据共享的方法
2019/12/20 Javascript
Antd中单个DatePicker限定时间输入范围操作
2020/10/29 Javascript
[01:16]2014DOTA2 TI专访C9战队EE:中国五强中会占三席
2014/07/10 DOTA
Python实现复杂对象转JSON的方法示例
2017/06/22 Python
python定向爬虫校园论坛帖子信息
2018/07/23 Python
Python获取好友地区分布及好友性别分布情况代码详解
2019/07/10 Python
python实现密度聚类(模板代码+sklearn代码)
2020/04/27 Python
Python代码需要缩进吗
2020/07/01 Python
Django启动时找不到mysqlclient问题解决方案
2020/11/11 Python
css3 transform过渡抖动问题解决
2020/10/23 HTML / CSS
PacSun官网:加州生活方式服装、鞋子和配饰
2018/03/10 全球购物
澳大利亚在线购买葡萄酒:The Wine Collective
2020/02/20 全球购物
市场营销管理毕业生自荐信
2014/03/03 职场文书
护理专业学生职业生涯规划范文
2014/03/11 职场文书
爱情寄语大全
2014/04/09 职场文书
2014年秋季开学演讲稿
2014/05/24 职场文书
司法局群众路线教育实践活动整改措施思想汇报
2014/10/13 职场文书
个人政治思想总结
2015/03/05 职场文书
运动会通讯稿100字
2015/07/20 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书
进阶篇之linux环境下安装MySQL数据库
2022/04/09 MySQL