C++加密解密php代码的方法_C 语言

本文实例讲述了C++加密解密php代码的方法。分享给大家供大家参考。具体实现方法如下:

#include "php.h"
#include "php_ini.h"
#include "ext/standard/info.h"
#include "string.h"
char * key = "abcd";
PHP_FUNCTION(encode){
  long key_len = strlen(key);
  char * code, * encode_code;
  long code_len;
  if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &code, &code_len) == FAILURE){
    return;
  }
  encode_code = encode(code, code_len, key, key_len);
  RETURN_STRING(encode_code, 0);
}
PHP_FUNCTION(decode){
  long key_len = strlen(key);
  char * code, * decode_code;
  long code_len;
  if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &code, &code_len) == FAILURE){
    return;
  }
  decode_code = decode(code, code_len, key, key_len);
  RETURN_STRING(decode_code, 0);
}
PHP_FUNCTION(run){
  char * en_base64_code;
  long en_base64_code_len;
  char * decode_code;
  long key_len = strlen(key);
  char * eval_code;
  char * str_name;
  if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &en_base64_code, &en_base64_code_len) == FAILURE){
    return;
  }
  str_name = zend_make_compiled_string_description("phpencoder" TSRMLS_CC);
  decode_code = decode(en_base64_code, en_base64_code_len, key, key_len); //解码
  spprintf(&eval_code, 0, " ?>%s<?php ", decode_code);
  free(decode_code);
  if(zend_eval_string(eval_code, NULL, str_name TSRMLS_CC) == FAILURE){ //解析失败
    efree(str_name);
    efree(eval_code);
    php_error_docref(NULL TSRMLS_CC, E_RECOVERABLE_ERROR, "Please make sure '<?php' end with '?>'", PHP_EOL);
    RETURN_FALSE;
  }
  efree(str_name);
  efree(eval_code);
  RETURN_TRUE;
}
inline char * encode(char * code, long code_len, char* key, long key_len){
  char * code_encode;
  int i;
  long offset = 0, ret_len;
  code_encode = strdup(code);
  for(i =0; i<code_len; i++){
    if(offset == key_len){
      offset = 0;
    }
    * (code_encode + i) = * (code + i) ^ * (key + offset);
    offset ++;
  }
  return php_base64_encode(code_encode, code_len, &ret_len); //base64 加密
}
inline char * decode(char * code,long code_len, char* key, long key_len){
  char * code_decode;
  char * nobase_code;
  int i;
  long offset = 0, ret_len;
  zend_bool strict = 0;
  code_decode = strdup(code);
  nobase_code = php_base64_decode_ex((unsigned char*)code, code_len, &ret_len, strict); //解密,ret_len 返回长度
  for(i =0; i<ret_len; i++){
    if(offset == key_len){
      offset = 0;
    }
    * (code_decode + i) = * (nobase_code + i) ^ * (key + offset);
    offset ++;
  }
  * (code_decode + i) = '\0';
  return code_decode;
}

希望本文所述对大家的C++程序设计有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索c++
加密解密
c语言加密解密代码、易语言和php加密解密、易语言 php 加密解密、php des加密解密 代码、php代码加密解密,以便于您获取更多的相关知识。

时间: 2024-09-13 23:09:34

C++加密解密php代码的方法_C 语言的相关文章

VC对自定义资源加密解密(AES)的详解_C 语言

加密解密exe算法可能AES加密解密算法别人已经实现过,也有一些关于如何操纵自定义资源的VC代码,我只是将它们进行了组合,运用到了一起,并运用了一些操纵内存的小技巧,今天将以前做的这个功能总结了一下--在网上搜了一下,好像很少有相关的这种用法,算是原创吧,有兴趣的朋友可以看一下,以下是源码和EXE文件下载地址:点击下载 来两张截图: 图1-1 输出资自定义资源的内容,我的自定义资源是"TEXT" 图1-2 这是加密后再输出的结果

aes对称加密解密-求解一个 单表替代密码 和aes加密解密 c++代码

问题描述 求解一个 单表替代密码 和aes加密解密 c++代码 如题 要用vs2015做 最好一天内搞定 简单易懂 小白急用 解决方案 AES加密算法(C++实现,附源码) http://download.csdn.net/detail/cleopard/7245981 单表置换密码的C++代码实现 http://download.csdn.net/detail/zjj7188/9301155 解决方案二: http://www.tuicool.com/articles/rMzuQrhttp:/

排列和组合算法的实现方法_C语言经典案例_C 语言

排列和组合算法是考查递归的常见算法,这两种算法能用递归简洁地实现. 本人在经过多次摸索和思考之后,总结如下,以供参考. 程序代码如下: #include <stdio.h> #include <stdlib.h> char array[] = "abcd"; #define N 4 #define M 3 int queue[N] = {0}; int top = 0; int flag[N] = {0}; void perm(int s, int n) { i

python字符串加密解密的三种方法分享(base64 win32com)_python

1. 最简单的方法是用base64: 复制代码 代码如下: import base64 s1 = base64.encodestring('hello world')s2 = base64.decodestring(s1)print s1,s2 # aGVsbG8gd29ybGQ=\n# hello world Note: 这是最简单的方法了,但是不够保险,因为如果别人拿到你的密文,也可以自己解密来得到明文 2. 第二种方法是使用win32com.client 复制代码 代码如下: import

PHP可逆加密解密算法程序代码

对于大部分密码加密,我们可以采用md5.sha1等方法.可以有效防止数据泄露,但是这些方法仅适用于无需还原的数据加密. 对于需要还原的信息,则需要采用可逆的加密解密算法. 下面一组PHP函数是实现此加密解密的方法: 加密算法如下:  代码如下 复制代码 function encrypt($data, $key) {  $key = md5($key);     $x  = 0;     $len = strlen($data);     $l  = strlen($key);     for (

Android、iOS和Java通用的AES128加密解密示例代码_java

前言 移动端越来越火了,我们在开发过程中,总会碰到要和移动端打交道的场景,比如android和iOS的打交道.为了让数据交互更安全,我们需要对数据进行加密传输. 这篇文章给大家分享AES的加密和解密.Android和ios通用的AES加密算法.大家可以直接集成到自己的项目.服务器接口如果是用Java写的话.整个框架都完美了.如果是.NET编写的后台接口的话.得改造一下哦 IOS加密 /*加密方法*/ (NSString *)AES256EncryptWithPlainText:(NSString

python有证书的加密解密程序代码

最近在做python的加解密工作,同时加完密的串能在php上能解出来,网上也找了一些靠谱的资料,刚好也有时间我就总结了一下python在加密与解密这块的代码,今后可能还能用的上.相对于php而言python这块加解密组件较多的,分别是:     python-crypto - 这个组件是基本组件,使用的函式相对比较复杂.     ezPyCrypto - 相对简单,但他作出?淼墓?皆课薹ㄓ肫渌?淌较嗉嫒荨?br />     SSLCrypto - 与 ezPyCrypto 是相同一个作者开发,

一段php加密解密的代码

加密|解密 <?php $key = "This is supposed to be a secret key !!!"; function keyED($txt,$encrypt_key) { $encrypt_key = md5($encrypt_key); $ctr=0; $tmp = ""; for ($i=0;$i<strlen($txt);$i++) { if ($ctr==strlen($encrypt_key)) $ctr=0; $tmp

随机加密程序的实现方法_C 语言

利用异或的性质来对文件进行加密: 复制代码 代码如下: c=a^b c^b=a #include "stdio.h"#include "stdlib.h" void main(int argc,char *argv[]){ FILE *fp1,*fp2; char c,ch; long j; if(3!=argc) {  printf("Command error/n");  exit(1); }  if((fp1=fopen(argv[1],&