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

本文实例讲述了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++程序设计有所帮助。

(0)

相关推荐

  • Java与C++实现相同的MD5加密算法简单实例

    1.Java版 package com.lyz.utils.common; import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; /** * MD5加密 * @author liuyazhuang */ public class MD5Hash { public static String md5

  • C语言使用openSSL库DES模块实现加密功能详解

    本文实例讲述了C语言使用openSSL库DES模块实现加密功能.分享给大家供大家参考,具体如下: 在通讯过程中为了防止普通的玩家截取协议修改内容并且发送,我们是有必要对协议进行加密的.当前这样的加密手段都已经是变成世界里面的基础设施了.我们只需要将其引入到工程中就好.本文将会基于OpenSSL来编写一个加密.解密的实例.时下流行的加密解密方式有DES/AES.先我们来聊聊历史吧. 历史介绍 DES(Data Encryption Standard) DES一度是电子数据对称加密的主导者.他影响了

  • 基于C语言实现的aes256加密算法示例

    本文实例讲述了基于C语言实现的aes256加密算法.分享给大家供大家参考,具体如下: aes256.h: #ifndef uint8_t #define uint8_t unsigned char #endif #ifdef __cplusplus extern "C" { #endif typedef struct { uint8_t key[32]; uint8_t enckey[32]; uint8_t deckey[32]; } aes256_context; void aes

  • C语言使用openSSL库AES模块实现加密功能详解

    本文实例讲述了C语言使用openSSL库AES模块实现加密功能.分享给大家供大家参考,具体如下: 概述 在密码学里面一共有3中分类: 1.对称加密/解密 对称加密比较常见的有DES/AES.加密方和解密方都持有相同的密钥.对称的意思就是加密和解密都是用相同的密钥. 2.非对称加密/解密 常见的加密算法DSA/RSA.如果做过Google Pay的话,应该不会陌生.非对称意味着加密和解密使用的密钥不是相同的.这种应用的场合是需要保持发起方的权威性,比如Google中一次支付行为,只能Google通

  • C++中四种加密算法之DES源代码

    DES算法是一种最通用的对称密钥算法,因为算法本身是公开的,所以其安全性在于密钥的安全性.基于密钥的算法通常有两类:对称算法和公开密钥算法.对称算法的对称性体现在加密密钥能够从解密密钥推算出来,反之亦然. 在大多数对称算法中,加解密的密钥是相同的,DES就是这样.可见,对称密钥算法的加解密密钥都是保密的.而公开密钥算法的加密密钥是公开的,解密密钥是保密的. DES具体算法如下: ///////////////////////////////////////////////////////////

  • C++中四种加密算法之AES源代码

    摘要:作为新一代的加密标准,AES 旨在取代 DES(请看<DES加密算法的C++实现>),以适应当今分布式开放网络对数据加密安全性的要求.本文在分析了 AES 加密原理的基础上着重说明了算法实现的具体步骤,并用 C++ 实现了对文件的加密和解密. 一.AES 介绍 AES(高级加密标准,Advanced Encryption Standard),在密码学中又称 Rijndael 加密法,是美国联邦政府采用的一种分组加密标准.这个标准用来替代原先的 DES,目前已经广为全世界所使用,成为对称密

  • C++实现DES加密算法实例解析

    本文所述实例是一个实现DES加密算法的程序代码,在C++中,DES加密是比较常用的加密算法了,且应用非常广泛.本CPP类文件可满足你的DES加密需要,代码中附带了丰富的注释,相信对于大家理解DES可以起到很大的帮助. 具体实现代码如下: #include "memory.h" #include "stdio.h" enum {encrypt,decrypt};//ENCRYPT:加密,DECRYPT:解密 void des_run(char out[8],char

  • C++加密解密php代码的方法

    本文实例讲述了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); c

  • Java AES加密解密的简单实现方法

    废话不多说,直接上代码 package com.mstf.aes; import java.io.UnsupportedEncodingException; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import javax.crypto.BadPaddingException; import

  • C# 数据库链接字符串加密解密工具代码详解

    有些项目尤其是WinForm或者是WPF项目,针对一些工具形式的小项目,不想软件流出去之后,懂程序的的拿到手之后一看配置文件就知道了我们数据库的用户名和密码,如果外网能访问的话,那就麻烦大了.所以这里为了防止项目外泄之后这些信息不被别人看到,我们就需要对链接字符串或者其他重要信息进行加密,用的时候在解密. 思路:使用两个数对连接字符串进行加密,再用这两个数进行解密. <add key="ConfigString" value="4HsXBRNXTkeN0ZoKdEwFE

  • python文字和unicode/ascll相互转换函数及简单加密解密实现代码

    这篇文章主要介绍了python文字和unicode/ascll相互转换函数及简单加密解密实现代码,下面我们来了解一下. import re import random # ord() 它以一个字符(长度为1的字符串)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值 # chr() 是见数字变成汉字 #函数功能:将输入的字符串加密 #加密方式,将字变成Unicode 数值,然后加上一个随机数,然后再变成汉字,再在汉字后面加上这个数字,组成加密后的密文 #返回值:加密后的密文 #

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

    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实现的DES加密解密实例代码

    本文实例讲述了PHP实现的DES加密解密实例.分享给大家供大家参考,具体如下: <?php $key = 'very important data'; function jiami($key, $str) { /* Open module, and create IV */ $td = mcrypt_module_open('des', '', 'ecb', ''); //$td = mcrypt_module_open(MCRYPT_DES, '', MCRYPT_MODE_CBC, '');

  • Java AES256加密解密示例代码

    Java支持许多安全的加密算法,但是其中一些功能较弱,无法在安全性要求很高的应用程序中使用.例如,数据加密标准(DES)加密算法被认为是高度不安全的.今天介绍一下AES 256加密解密. 什么是 AES 256? 高级加密标准 (英语:Advanced Encryption Standard,缩写:AES ),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用. AES是一种对称加密算法.它旨在易于在硬件和软

  • jmeter接口测试之使用rsa算法加密解密的代码

    本篇介绍jmeter 使用rsa算法进行加密参数 如果测试过程中,部分接口采用了rsa加密算法,我们的jmeter 也是可以直接拿来调用的,不需要开发配合去掉加密代码! 直接上代码 import org.apache.commons.codec.binary.Base64; import java.io.ByteArrayOutputStream; import java.security.Key; import java.security.KeyFactory; import java.sec

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

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

  • 具有时效性的php加密解密函数代码

    复制代码 代码如下: <?phpfunction encode_pass($tex,$key,$type="encode",$expiry=0){    $chrArr=array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z',                  'A','B','C','D','E','F','G','

随机推荐