/***********************************************************************
Copyright 2006-2007 Ma Bingyao
These sources is free software. Redistributions of source code must
retain the above copyright notice. Redistributions in binary form
must reproduce the above copyright notice. You can redistribute it
freely. You can use it with any free or commercial software.
These sources is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY. Without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
You may contact the author by:
e-mail: andot@coolcode.cn
*************************************************************************/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "php.h"
#if HAVE_XXTEA
#include "php_xxtea.h"
#include "ext/standard/info.h" /* for phpinfo() functions */
#include "xxtea.h"
/* compiled function list so Zend knows what's in this module */
zend_function_entry xxtea_functions[] =
{
ZEND_FE(xxtea_encrypt, NULL)
ZEND_FE(xxtea_decrypt, NULL)
ZEND_FE(xxtea_info, NULL)
{NULL, NULL, NULL}
};
/* compiled module information */
zend_module_entry xxtea_module_entry =
{
STANDARD_MODULE_HEADER,
XXTEA_MODULE_NAME,
xxtea_functions,
ZEND_MINIT(xxtea),
ZEND_MSHUTDOWN(xxtea),
NULL,
NULL,
ZEND_MINFO(xxtea),
XXTEA_VERSION,
STANDARD_MODULE_PROPERTIES
};
/* implement standard "stub" routine to introduce ourselves to Zend */
#if defined(COMPILE_DL_XXTEA)
ZEND_GET_MODULE(xxtea)
#endif
static xxtea_long *xxtea_to_long_array(unsigned char *data, xxtea_long len, int include_length, xxtea_long *ret_len) {
xxtea_long i, n, *result;
n = len >> 2;
n = (((len & 3) == 0) ? n : n + 1);
if (include_length) {
result = (xxtea_long *)emalloc((n + 1) << 2);
result[n] = len;
*ret_len = n + 1;
} else {
result = (xxtea_long *)emalloc(n << 2);
*ret_len = n;
}
memset(result, 0, n << 2);
for (i = 0; i < len; i++) {
result[i >> 2] |= (xxtea_long)data[i] << ((i & 3) << 3);
}
return result;
}
static unsigned char *xxtea_to_byte_array(xxtea_long *data, xxtea_long len, int include_length, xxtea_long *ret_len) {
xxtea_long i, n, m;
unsigned char *result;
n = len << 2;
if (include_length) {
m = data[len - 1];
if ((m < n - 7) || (m > n - 4)) return NULL;
n = m;
}
result = (unsigned char *)emalloc(n + 1);
for (i = 0; i < n; i++) {
result[i] = (unsigned char)((data[i >> 2] >> ((i & 3) << 3)) & 0xff);
}
result[n] = '\0';
*ret_len = n;
return result;
}
static unsigned char *php_xxtea_encrypt(unsigned char *data, xxtea_long len, unsigned char *key, xxtea_long *ret_len) {
unsigned char *result;
xxtea_long *v, *k, v_len, k_len;
v = xxtea_to_long_array(data, len, 1, &v_len);
k = xxtea_to_long_array(key, 16, 0, &k_len);
xxtea_long_encrypt(v, v_len, k);
result = xxtea_to_byte_array(v, v_len, 0, ret_len);
efree(v);
efree(k);
return result;
}
static unsigned char *php_xxtea_decrypt(unsigned char *data, xxtea_long len, unsigned char *key, xxtea_long *ret_len) {
unsigned char *result;
xxtea_long *v, *k, v_len, k_len;
v = xxtea_to_long_array(data, len, 0, &v_len);
k = xxtea_to_long_array(key, 16, 0, &k_len);
xxtea_long_decrypt(v, v_len, k);
result = xxtea_to_byte_array(v, v_len, 1, ret_len);
efree(v);
efree(k);
return result;
}
/* {{{ proto string xxtea_encrypt(string data, string key)
Encrypt string using XXTEA algorithm */
ZEND_FUNCTION(xxtea_encrypt)
{
unsigned char *data, *key;
unsigned char *result;
xxtea_long data_len, key_len, ret_length;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &data, &data_len, &key, &key_len) == FAILURE) {
return;
}
if (data_len == 0) RETVAL_STRINGL(NULL, 0, 0);
if (key_len != 16) RETURN_FALSE;
result = php_xxtea_encrypt(data, data_len, key, &ret_length);
if (result != NULL) {
RETVAL_STRINGL((char *)result, ret_length, 0);
} else {
RETURN_FALSE;
}
}
/* }}} */
/* {{{ proto string xxtea_decrypt(string data, string key)
Decrypt string using XXTEA algorithm */
ZEND_FUNCTION(xxtea_decrypt)
{
unsigned char *data, *key;
unsigned char *result;
xxtea_long data_len, key_len, ret_length;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &data, &data_len, &key, &key_len) == FAILURE) {
return;
}
if (data_len == 0) RETVAL_STRINGL(NULL, 0, 0);
if (key_len != 16) RETURN_FALSE;
result = php_xxtea_decrypt(data, data_len, key, &ret_length);
if (result != NULL) {
RETVAL_STRINGL((char *)result, ret_length, 0);
} else {
RETURN_FALSE;
}
}
/* }}} */
ZEND_MINIT_FUNCTION(xxtea)
{
return SUCCESS;
}
ZEND_MSHUTDOWN_FUNCTION(xxtea)
{
return SUCCESS;
}
ZEND_MINFO_FUNCTION(xxtea)
{
php_info_print_table_start();
php_info_print_table_row(2, "xxtea support", "enabled");
php_info_print_table_row(2, "xxtea module version", XXTEA_VERSION);
php_info_print_table_row(2, "xxtea author", XXTEA_AUTHOR);
php_info_print_table_row(2, "xxtea homepage", XXTEA_HOMEPAGE);
php_info_print_table_end();
}
ZEND_FUNCTION(xxtea_info)
{
array_init(return_value);
add_assoc_string(return_value, "ext_version", XXTEA_VERSION, 1);
add_assoc_string(return_value, "ext_build_date", XXTEA_BUILD_DATE, 1);
add_assoc_string(return_value, "ext_author", XXTEA_AUTHOR, 1);
add_assoc_string(return_value, "ext_homepage", XXTEA_HOMEPAGE, 1);
}
#endif /* if HAVE_XXTEA */
没有合适的资源?快使用搜索试试~ 我知道了~
基于thinkphp框架的定时器(定时执行任务)
共372个文件
php:318个
dhp:12个
yaml:5个
2星 需积分: 50 157 下载量 192 浏览量
2016-10-12
15:48:49
上传
评论
收藏 1.22MB ZIP 举报
温馨提示
基于thinkphp框架的定时器(定时执行任务)
资源推荐
资源详情
资源评论
收起资源包目录
基于thinkphp框架的定时器(定时执行任务) (372个子文件)
php_xxtea.c 6KB
xxtea.c 2KB
COPYING 1KB
CREDITS 53B
768.dhp 40KB
512.dhp 35KB
1024.dhp 32KB
1536.dhp 28KB
3072.dhp 28KB
2048.dhp 25KB
4096.dhp 25KB
96.dhp 20KB
128.dhp 18KB
160.dhp 14KB
192.dhp 12KB
256.dhp 10KB
php_xxtea.dsp 9KB
php_xxtea.h 2KB
xxtea.h 1KB
.htaccess 210B
index.html 3KB
index.html 1B
INSTALL 2KB
composer.json 607B
LICENSE 3KB
16_03_04.log 8KB
config.m4 242B
README.md 900B
README.md 21B
2.otf 49KB
smarty_internal_templateparser.php 157KB
FireShowPageTraceBehavior.class.php 70KB
Model.class.php 67KB
functions.php 53KB
bcs.class.php 49KB
Smarty.class.php 44KB
Driver.class.php 42KB
functions.php 37KB
smarty_internal_templatelexer.php 37KB
Spyc.php 35KB
smarty_internal_configfileparser.php 34KB
smarty_internal_utility.php 33KB
smarty_internal_templatebase.php 32KB
class.compiler.php 30KB
requestcore.class.php 30KB
HproseCommon.php 29KB
Mongo.class.php 29KB
Template.class.php 28KB
smarty_internal_templatecompilerbase.php 28KB
smarty_internal_template.php 28KB
smarty_resource.php 27KB
template.core.php 26KB
Html.class.php 26KB
HproseReader.php 25KB
PHPExcel.class.php 24KB
class.template.php 24KB
Cx.class.php 23KB
RelationModel.class.php 23KB
smarty_internal_configfilelexer.php 22KB
phprpc_client.php 21KB
AdvModel.class.php 20KB
HproseHttpServer.php 20KB
Imagick.class.php 19KB
bigint.php 19KB
Des.class.php 18KB
Gd.class.php 18KB
ChromeShowPageTraceBehavior.class.php 18KB
phprpc_server.php 17KB
smarty_internal_data.php 17KB
phprpc_date.php 17KB
smarty_cacheresource_keyvaluestore.php 17KB
Verify.class.php 16KB
Date.class.php 16KB
Lite.class.php 15KB
Dispatcher.class.php 15KB
GIF.class.php 15KB
smarty_security.php 15KB
function.html_select_date.php 15KB
Upload.class.php 14KB
MergeModel.class.php 14KB
MongoModel.class.php 13KB
String.class.php 13KB
Route.class.php 13KB
function.html_select_time.php 13KB
ParseTest.php 13KB
HproseHttpClient.php 13KB
class.smarttemplatedebugger.php 13KB
Rbac.class.php 13KB
SmartyBC.class.php 13KB
App.class.php 12KB
Think.class.php 12KB
HproseWriter.php 12KB
smarty_cacheresource.php 11KB
convention.php 11KB
Controller.class.php 11KB
HproseIOStream.php 11KB
class.smarttemplateparser.php 11KB
smarty_internal_compile_block.php 11KB
QiniuStorage.class.php 11KB
smarty_internal_cacheresource_file.php 10KB
共 372 条
- 1
- 2
- 3
- 4
资源评论
- Ijntk.2020-09-28坑坑坑坑,别下!!!
- 风亲羊丶2017-11-02好好好6666
- jianjian06052017-12-26坑人的玩意,千万别下
- Bobo-Bobo2021-03-30不行,还是用其它方式吧
qq_27022081
- 粉丝: 2
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功