关闭

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

970人阅读 评论(0) 收藏 举报
分类:
代码很简单,这里就不多废话了,直接奉上代码

  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);  

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

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:235178次
    • 积分:2930
    • 等级:
    • 排名:第12583名
    • 原创:13篇
    • 转载:320篇
    • 译文:0篇
    • 评论:13条
    最新评论