<?php
/**
* 数据加密,解密,验证签名
* @edit http://www.lai18.com
* @date 2015-07-08
**/
//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);

转载于:https://www.cnblogs.com/kkvt/p/4688559.html

php接口数据加密、解密、验证签名【转】相关推荐

  1. iOS使用Security.framework进行RSA 加密解密签名和验证签名

    iOS 上 Security.framework为我们提供了安全方面相关的api: Security框架提供的RSA在iOS上使用的一些小结 支持的RSA keySize 大小有:512,768,10 ...

  2. 【RSA】RSA加密、解密、签名与验证

    前言 最近要做iOS SDK的联网授权,涉及到数据安全验证,因此想到使用RSA进行签名和验证. 授权主要流程如下: 1.客户方前往我方开放平台注册授权,得到AppId和AppSecret. 2.客户方 ...

  3. 软件测试 接口测试 接口鉴权 token鉴权 Mock Server 接口加解密 接口签名sign

    文章目录 1 接口鉴权 1.1 cookie鉴权 1.2 session鉴权 1.3 token鉴权 1.4 Postman的鉴权方式 2 Mock Server 3 接口加解密 3.1 加密方式 3 ...

  4. 使用node加密解密数据,创建Hash/HMAC,并生成签名与验证签名

    1.数据加密与解密 主要使用了node的crypto模块的Cipher与Decipher类来加密解密,加密与解密的方法主要有以下几种: 1.1 使用Cipher与Decipher对象作为流来加密解密 ...

  5. .NET Core 使用RSA算法 加密/解密/签名/验证签名

    前言 前不久移植了支付宝官方的SDK,以适用ASP.NET Core使用支付宝支付,但是最近有好几位用户反应在Linux下使用会出错,调试发现是RSA加密的错误,下面具体讲一讲. RSA在.NET C ...

  6. C# 微信JS-SDK之config接口注入权限验证invalid signature签名错误

    文章目录 1.开发环境 2.我的代码 3.问题描述 4.问题分析 5.问题根源 6.解决办法 记一次使用微信JS-SDK分享接口,config接口注入权限验证失败, 提示invalid signatu ...

  7. RSA加密、解密、签名、验签(验证签名)RSA算法原理

    转载链接:https://www.jianshu.com/p/8dc4a5f64e06 https://www.cnblogs.com/pcheng/p/9629621.html RSA原理:http ...

  8. php api接口验证签名错误,API常用签名验证方法(PHP实现)

    使用场景 现在越来越多的项目使用的前后端分离的模式进行开发,后端开发人员使用API接口传递数据给到前端开发进行处理展示,在一些比较重要的修改数据接口,涉及金钱,用户信息等修改的接口如果不做防护验证,经 ...

  9. 开发API接口的安全验证:token,参数签名,时间戳

    前言:服务端与前端对接的API接口,如果被第三方抓包并进行恶意篡改参数,可能会导致数据泄露和篡改数据,下面主要围绕token,签名,时间戳,三个部分来保证API接口的安全性. 强烈推荐,简单明了: 瞧 ...

最新文章

  1. mac os x 添加 用户 所属 组
  2. NYOJ 420 p次方求和 大数的幂
  3. python模块安装路径
  4. yum源安装php报错缺少libmcrypt.so.4()(64bit)库
  5. 彻底搞懂四元数(转载)
  6. .vimrc示例文件
  7. 腾讯T4梳理的必备笔记:自动化测试必掌握的30个核心知识点
  8. Atitit 字符串模板与 字符串插值 目录 1.1. 字符串插值是将字符串中的占位符替换为局域变量的过程 1 1.2. 模板字面量 是允许嵌入表达式的字符串字面量 1 1.3. 格式化字符串[编辑
  9. 计算机的的打印服务,Win7系统print spooler打印机服务自动停止处理办法
  10. uniapp实现微信登录
  11. 声音文件格式、常见的数字音频格式
  12. 打游戏买什么手机好?rog3性能强 网速稳!
  13. 【日常问题解决】docker 映射端口出错
  14. 谷歌浏览器如何配置SSL证书
  15. 【板栗糖GIS】怎么将网络上只能在线预览文档另存为pdf(插件篇)
  16. 浪潮服务器安装windows2008系统,浪潮NF5280M3安装Windows Server 2008 R2注意事项
  17. linux 硬盘时间查询,Linux 查看硬盘通电时间
  18. PS和PL共享DDR
  19. 建设智能工厂建设,主要划分为哪几步?
  20. 从深度学习计算过程来分析深度学习工作站\服务器的硬件配置

热门文章

  1. L1-007 念数字
  2. 第 4 章  超链接和路径
  3. C++中explicit关键字用法
  4. jQuery lazyload插件详解和问题解答
  5. POJ 2942 Knights of the Round Table ★(点双连通分量+二分图判定)
  6. Community Server系列之三:页面间关系2[介绍]
  7. C++中的野指针问题
  8. ListView用法总结
  9. C#String.Split (string[], StringSplitOptions) 多参数分割得到数组
  10. IOS设置导航栏的背景图片和文字