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 相关文章推荐
PHPlet在Windows下的安装
Oct 09 PHP
在线增减.htpasswd内的用户
Oct 09 PHP
使用 eAccelerator加速PHP代码的方法
Sep 30 PHP
删除及到期域名的查看(抢域名必备哦)
May 14 PHP
PHP 操作文件的一些FAQ总结
Feb 12 PHP
php的ajax框架xajax入门与试用介绍
Dec 19 PHP
PHP开发者常犯的10个MySQL错误更正剖析
Jan 30 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
Dec 22 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
Jan 11 PHP
PHP截取IE浏览器并缩小原图的方法
Mar 04 PHP
通过php动态传数据到highcharts
Apr 05 PHP
删除PHP数组中头部、尾部、任意元素的实现代码
Apr 10 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
function.inc.php超越php
2006/12/09 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
2013/01/23 PHP
php版微信自定义回复功能示例
2016/12/05 PHP
PHP中的浅复制与深复制的实例详解
2017/10/26 PHP
php实现等比例压缩图片
2018/07/26 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
2019/04/02 PHP
Javascript模板技术
2007/04/27 Javascript
JavaScript小技巧 2.5 则
2010/09/12 Javascript
javascript获取url上某个参数的方法
2013/11/08 Javascript
jquery选择器需要注意的问题
2014/11/26 Javascript
原生Js实现简易烟花爆炸效果的方法
2015/03/20 Javascript
如何通过js实现图片预览功能【附实例代码】
2016/03/30 Javascript
学习使用Bootstrap输入框、导航、分页等常用组件
2017/05/11 Javascript
vue计算属性和监听器实例解析
2018/05/10 Javascript
d3绘制基本的柱形图的实现代码
2018/12/12 Javascript
原生js实现随机点名
2020/07/05 Javascript
在Python中使用全局日志时需要注意的问题
2015/05/06 Python
Python中每次处理一个字符的5种方法
2015/05/21 Python
对python csv模块配置分隔符和引用符详解
2018/12/12 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
使用Windows批处理和WMI设置Python的环境变量方法
2019/08/14 Python
学python安装的软件总结
2019/10/12 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
2019/12/04 Python
Python制作运行进度条的实现效果(代码运行不无聊)
2021/02/24 Python
家庭睡衣和家庭用品:Little Blue House
2018/03/18 全球购物
在浏览器端如何得到服务器端响应的XML数据
2012/11/24 面试题
副总经理工作职责
2013/11/28 职场文书
《雪儿》教学反思
2014/04/17 职场文书
教师廉洁自律承诺书
2014/05/26 职场文书
娱乐节目策划方案
2014/06/10 职场文书
学生党员检讨书范文
2014/12/27 职场文书
医院科室评语
2015/01/04 职场文书
投资意向协议书
2015/01/29 职场文书
2016年读书月活动总结范文
2016/04/06 职场文书
如何判断pytorch是否支持GPU加速
2021/06/01 Python
Redis数据同步之redis shake的实现方法
2022/04/21 Redis