国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++加密解密php代碼的方法

2020-05-23 14:17:08
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了C++加密解密php代碼的方法,實例分析了基于C++實現加密解密的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了C++加密解密php代碼的方法。分享給大家供大家參考。具體實現方法如下:

 

 
  1. #include "php.h" 
  2. #include "php_ini.h" 
  3. #include "ext/standard/info.h" 
  4. #include "string.h" 
  5. char * key = "abcd"
  6. PHP_FUNCTION(encode){ 
  7. long key_len = strlen(key); 
  8. char * code, * encode_code; 
  9. long code_len; 
  10. if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &code, &code_len) == FAILURE){ 
  11. return
  12. encode_code = encode(code, code_len, key, key_len); 
  13. RETURN_STRING(encode_code, 0); 
  14. PHP_FUNCTION(decode){ 
  15. long key_len = strlen(key); 
  16. char * code, * decode_code; 
  17. long code_len; 
  18. if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &code, &code_len) == FAILURE){ 
  19. return
  20. decode_code = decode(code, code_len, key, key_len); 
  21. RETURN_STRING(decode_code, 0); 
  22. PHP_FUNCTION(run){ 
  23. char * en_base64_code; 
  24. long en_base64_code_len; 
  25. char * decode_code; 
  26. long key_len = strlen(key); 
  27. char * eval_code; 
  28. char * str_name; 
  29. if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &en_base64_code, &en_base64_code_len) == FAILURE){ 
  30. return
  31. str_name = zend_make_compiled_string_description("phpencoder" TSRMLS_CC); 
  32. decode_code = decode(en_base64_code, en_base64_code_len, key, key_len); //解碼 
  33. spprintf(&eval_code, 0, " ?>%s<?php ", decode_code); 
  34. free(decode_code); 
  35. if(zend_eval_string(eval_code, NULL, str_name TSRMLS_CC) == FAILURE){ //解析失敗 
  36. efree(str_name); 
  37. efree(eval_code); 
  38. php_error_docref(NULL TSRMLS_CC, E_RECOVERABLE_ERROR, "Please make sure '<?php' end with '?>'", PHP_EOL); 
  39. RETURN_FALSE; 
  40. efree(str_name); 
  41. efree(eval_code); 
  42. RETURN_TRUE; 
  43. inline char * encode(char * code, long code_len, char* key, long key_len){ 
  44. char * code_encode; 
  45. int i; 
  46. long offset = 0, ret_len; 
  47. code_encode = strdup(code); 
  48. for(i =0; i<code_len; i++){ 
  49. if(offset == key_len){ 
  50. offset = 0; 
  51. * (code_encode + i) = * (code + i) ^ * (key + offset); 
  52. offset ++; 
  53. return php_base64_encode(code_encode, code_len, &ret_len); //base64 加密 
  54. inline char * decode(char * code,long code_len, char* key, long key_len){ 
  55. char * code_decode; 
  56. char * nobase_code; 
  57. int i; 
  58. long offset = 0, ret_len; 
  59. zend_bool strict = 0; 
  60. code_decode = strdup(code); 
  61. nobase_code = php_base64_decode_ex((unsigned char*)code, code_len, &ret_len, strict); //解密,ret_len 返回長度 
  62. for(i =0; i<ret_len; i++){ 
  63. if(offset == key_len){ 
  64. offset = 0; 
  65. * (code_decode + i) = * (nobase_code + i) ^ * (key + offset); 
  66. offset ++; 
  67. * (code_decode + i) = '/0'
  68. return code_decode; 

希望本文所述對大家的C++程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和静县| 闸北区| 东明县| 新河县| 梅河口市| 东平县| 静海县| 遂宁市| 璧山县| 沛县| 大余县| 南江县| 桦南县| 南川市| 淮阳县| 广德县| 阳江市| 汝州市| 营口市| 容城县| 海淀区| 蕲春县| 尚志市| 麻江县| 萍乡市| 曲水县| 江阴市| 鹰潭市| 都匀市| 大方县| 东港市| 奈曼旗| 绥阳县| 如东县| 龙川县| 平湖市| 连城县| 汤原县| 蒙城县| 古蔺县| 东方市|