php接口数据加密、解密、验证签名 ╰+攻爆jí腚メ 2022-08-02 04:42 154阅读 0赞 代码很简单,这里就不多废话了,直接奉上代码 **\[php\]** [view plain][] [copy][view plain] 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($plaintext, base64\_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); 每当你讲任何涉及到钱财事务等交易问题时,需要特别注意安全问题的考虑,例如开发一个论坛或者是一个购物车等。 [view plain]: http://blog.csdn.net/hello_katty/article/details/46798713#
还没有评论,来说两句吧...