资源简介
gsms应急通讯代码基于openbts2.8 页面使用php开发,包含openbts 2.8 编译的程序
代码片段和文件信息
/***********************************************************************
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);
评论
共有 条评论