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.ini中文版
Oct 09 PHP
PHP 采集程序中常用的函数
Dec 09 PHP
用PHP实现读取和编写XML DOM代码
Apr 07 PHP
php更改目录及子目录下所有的文件后缀的代码
Sep 24 PHP
三种php连接access数据库方法
Nov 11 PHP
详谈PHP文件目录基础操作
Nov 11 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
Nov 07 PHP
php计算多个集合的笛卡尔积实例详解
Feb 16 PHP
一个非常实用的php文件上传类
Jul 04 PHP
PHP程序员学习使用Swoole的理由
Jun 24 PHP
PHP格式化显示时间date()函数代码
Oct 03 PHP
PHP hebrev()函数用法讲解
Feb 21 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
PHP中在数据库中保存Checkbox数据(2)
2006/10/09 PHP
用PHP动态创建Flash动画
2006/10/09 PHP
php重定向的三种方法分享
2012/02/22 PHP
简单分析ucenter 会员同步登录通信原理
2014/08/25 PHP
PHP中抽象类、接口的区别与选择分析
2016/03/29 PHP
thinkphp框架类库扩展操作示例
2019/11/26 PHP
最新优化收藏到网摘代码(digg,diigo)
2007/02/07 Javascript
用javascript实现的激活输入框后隐藏初始内容
2007/06/29 Javascript
myEvent.js javascript跨浏览器事件框架
2011/10/24 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
jQuery中使用animate自定义动画的方法
2016/05/29 Javascript
JavaScript浏览器对象之一Window对象详解
2016/06/03 Javascript
JavaScript数据类型转换的注意事项
2016/07/31 Javascript
微信小程序 获取二维码实例详解
2017/06/23 Javascript
react同构实践之实现自己的同构模板
2019/03/13 Javascript
利用Bootstrap Multiselect实现下拉框多选功能
2019/04/08 Javascript
openLayer4实现动态改变标注图标
2020/08/17 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
python:socket传输大文件示例
2017/01/18 Python
使用python读取csv文件快速插入数据库的实例
2018/06/21 Python
PyQT5 QTableView显示绑定数据的实例详解
2019/06/25 Python
Django之路由层的实现
2019/09/09 Python
python3的UnicodeDecodeError解决方法
2019/12/20 Python
关于python pycharm中输出的内容不全的解决办法
2020/01/10 Python
Python爬虫+tkinter界面实现历史天气查询的思路详解
2021/02/22 Python
硕士研究生自我鉴定
2013/11/08 职场文书
配件采购员岗位职责
2013/12/03 职场文书
大学生素质拓展活动方案
2014/02/11 职场文书
网站美工岗位职责
2014/04/02 职场文书
合伙经营协议书
2014/04/18 职场文书
公务员群众路线专题民主生活会发言材料
2014/09/17 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
医生辞职信范文
2015/03/02 职场文书
2015年人力资源工作总结
2015/04/08 职场文书
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL