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 相关文章推荐
用文本文件制作留言板提示(下)
Oct 09 PHP
php设计模式 Singleton(单例模式)
Jun 26 PHP
让Json更懂中文(JSON_UNESCAPED_UNICODE)
Oct 27 PHP
php mysql 判断update之后是否更新了的方法
Jan 10 PHP
Linux Apache PHP Oracle 安装配置(具体操作步骤)
Jun 17 PHP
PHP判断IP并转跳到相应城市分站的方法
Mar 25 PHP
php生成圆角图片的方法
Apr 07 PHP
php生成高清缩略图实例详解
Dec 07 PHP
PHP中include和require的区别实例分析
May 07 PHP
PHP基于redis计数器类定义与用法示例
Feb 08 PHP
PHP面向对象程序设计子类扩展父类(子类重新载入父类)操作详解
Jun 14 PHP
PHP使用PDO 连接与连接管理操作实例分析
Apr 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中header和session_start前不能有输出原因分析
2013/01/11 PHP
PHP实现二维数组中的查找算法小结
2018/06/09 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
php用户名的密码加密更安全的方法
2019/06/21 PHP
javascript firefox兼容ie的dom方法脚本
2008/05/18 Javascript
jQuery关于导航条背景切换效果实现示例
2013/09/04 Javascript
javascript使用appendChild追加节点实例
2015/01/12 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
jQuery实现表格隔行及滑动,点击时变色的方法【测试可用】
2016/08/20 Javascript
JS封装通过className获取元素的函数示例
2016/12/20 Javascript
javascript prototype原型详解(比较基础)
2016/12/26 Javascript
JS利用cookies设置每隔24小时弹出框
2017/04/20 Javascript
Vue中保存用户登录状态实例代码
2017/06/07 Javascript
vue路由懒加载的实现方法
2018/03/12 Javascript
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
2019/02/19 Javascript
解决element-ui的下拉框有值却无法选中的情况
2020/11/07 Javascript
Python可变参数函数用法实例
2015/07/07 Python
Python中对元组和列表按条件进行排序的方法示例
2015/11/10 Python
Python中类的初始化特殊方法
2017/12/01 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
python 中字典嵌套列表的方法
2018/07/03 Python
利用nohup来开启python文件的方法
2019/01/14 Python
python pygame实现方向键控制小球
2019/05/17 Python
在python中利用pycharm自定义代码块教程(三步搞定)
2020/04/15 Python
sklearn和keras的数据切分与交叉验证的实例详解
2020/06/19 Python
副职竞争上岗演讲稿
2014/05/12 职场文书
领导班子奢靡之风查摆问题及整改措施
2014/09/27 职场文书
单位接收函范文
2015/01/30 职场文书
医生辞职信范文
2015/03/02 职场文书
感恩教育观后感
2015/06/17 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书
选择比努力更重要?这是长期以来对“努力”的最大误解
2019/07/12 职场文书
python OpenCV学习笔记
2021/03/31 Python
Python竟然能剪辑视频
2021/05/25 Python
MongoDB数据库的安装步骤
2021/06/18 MongoDB
golang语言指针操作
2022/04/14 Golang