php接口数据加密、解密、验证签名

转载 2015年07月08日 10:43:33
代码很简单,这里就不多废话了,直接奉上代码

  1. <?php  
  2. /** 
  3.  * 数据加密,解密,验证签名 
  4.  * @edit http://www.lai18.com 
  5.  * @date 2015-07-08 
  6.  **/  
  7. //header('Content-Type: text/xml; charset=utf-8');  
  8.   
  9. include_once(dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.'phpsec'.DIRECTORY_SEPARATOR.'Math'.DIRECTORY_SEPARATOR.'BigInteger.php');  
  10.   
  11. include_once(dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.'phpsec'.DIRECTORY_SEPARATOR.'Crypt'.DIRECTORY_SEPARATOR.'AES.php');  
  12.   
  13. include_once(dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.'phpsec'.DIRECTORY_SEPARATOR.'Crypt'.DIRECTORY_SEPARATOR.'RSA.php');  
  14.   
  15. //密文  
  16.   
  17. $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';  
  18.   
  19. $aeskey = base64_decode('qZe60QZFxuirub2ey4+7+Q==');  
  20.   
  21. //AES解密,采用ECB模式  
  22.   
  23. $aes = new Crypt_AES(CRYPT_MODE_ECB);  
  24.   
  25. //设置AES密钥  
  26.   
  27. $aes->setKey($aeskey);  
  28.   
  29. //解密AES密文  
  30.   
  31. $plaintext = $aes->decrypt(base64_decode($crypttext));  
  32.   
  33. echo $plaintext;  
  34.   
  35. echo '<hr />';  
  36.   
  37. //AES加密明文  
  38.   
  39. //echo $aes->encrypt($plaintext);  
  40.   
  41. //rsa公钥  
  42.   
  43. $publickey = 'MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCffOeIVYut9jW5w1L5uKX4aDvd837a8JhaWm5S8YqNQfgEmfD9T+rDknXLqMT+DXeQAqGo4hBmcbej1aoMzn6hIJHk3/TfTAToNN8fgwDotHewsTCBbVkQWtDTby3GouWToVsRi1i/A0Vfb0+xM8MnF46DdhhrnZrycERBSbyrcwIDAQAB';  
  44.   
  45. //echo base64_decode($publickey);  
  46.   
  47. //rsa签名  
  48.   
  49. $signature = 'XHin4uUFqrKDEhKBD/hQisXLFFSxM6EZCvCPqnWCQJq3uEp3ayxmFuUgVE0Xoh4AIWjIIsOWdnaToL1bXvAFKwjCtXnkaRwUpvWrk+Q0eqwsoAdywsVQDEceG5stas1CkPtrznAIW2eBGXCWspOj+aumEAcPyYDxLhDN646Krzw=';  
  50.   
  51. //echo base64_decode($signature);  
  52.   
  53. $rsa = new Crypt_RSA();  
  54.   
  55. //设置RSA签名模式 CRYPT_RSA_SIGNATURE_PSS or CRYPT_RSA_SIGNATURE_PKCS1  
  56.   
  57. $rsa->setSignatureMode(CRYPT_RSA_SIGNATURE_PKCS1);  
  58.   
  59. //var_dump($rsa->createKey());  
  60.   
  61. //生成RSA公钥、私钥  
  62.   
  63. //extract($rsa->createKey());  
  64.   
  65. //使用RSA私钥生成签名  
  66.   
  67. //$rsa->loadKey($privatekey);  
  68.   
  69. //$signature = $rsa->sign($plaintext);  
  70.   
  71. //使用RSA公钥验证签名  
  72.   
  73. echo $plaintext;  
  74.   
  75. $rsa->loadKey(base64_decode($publickey));  
  76.   
  77. echo $rsa->verify($plaintextbase64_decode($signature)) ? 'verified' : 'unverified';  
  78.   
  79. echo '<hr />';  
  80.   
  81. //生成RSA公钥、私钥  
  82.   
  83. //var_dump($rsa->createKey());  
  84.   
  85. extract($rsa->createKey());  
  86.   
  87. //使用RSA私钥加密数据  
  88.   
  89. $rsa->loadKey($privatekey);  
  90.   
  91. $ciphertext = $rsa->encrypt($plaintext);  
  92.   
  93. //使用RSA公钥解密数据  
  94.   
  95. $rsa->loadKey($publickey);  
  96.   
  97. echo $rsa->decrypt($ciphertext);  

每当你讲任何涉及到钱财事务等交易问题时,需要特别注意安全问题的考虑,例如开发一个论坛或者是一个购物车等。

相关文章推荐

thinkphp U 方法加密传参

PHP做APP接口时,如何保证接口的安全性

PHP做APP接口时,如何保证接口的安全性? 1、当用户登录APP时,使用https协议调用后台相关接口,服务器端根据用户名和密码时生成一个access_key,并将access_key保存在ses...

PHP开发接口使用RSA进行加密解密方法

网络安全问题很重要,尤其是保证数据安全,遇到很多在写接口的程序员直接都是明文数据传输,在我看来这是很不专业的。本人提倡经过接口的数据都要进行加密解密之后进行使用。         这篇文章主要介绍使...

php接口数据加密、解密、验证签名代码实例

php接口数据加密、解密、验证签名 代码很简单,这里就不多废话了,直接奉上代码 ...

php webservice soapheader 身份验证

什么不说直接上代码soapserver.php

php webservice中使用soapheader简单验证 实例

webservicea中对soapheader的简单身份验证,以下为实例的代码。 由于个人测试添加了数据库获取数据测试并判断是否在是否通过验证的情况下输出。 可注释或删除相应函数段落。...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

【转】php调用webservice和有SoapHeader认证的

摘自:http://hi.baidu.com/hero%CD%F5%E6%DD/blog/item/c28bdd3b27d0dce3b311c71b.html 转载自 kubile1...
  • windxxf
  • windxxf
  • 2012年04月01日 15:42
  • 6222

PHP加密解密序列函数(URL加密解密、sha1加密解密、des加密解密)

普通hash函数如md5、sha1、base64等都是不可逆函数。虽然我们利用PHP可以利用这些函数写出可逆函数来。但是跨语言时这类可逆函数非常难搞定。所以这时尽量使用AES DES RC4 Rab...

PHP接口开发常规加密办法

PHP接口开发是PHP常见的技术,可以通过接口进行一些操作,可以访问接口获取数据,给app提供数据接口等,但是如果接口没有加密解密的过程,很容易发生盗用和不安全的操作。   下面例子简单讲...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:php接口数据加密、解密、验证签名
举报原因:
原因补充:

(最多只允许输入30个字)