注入所有php页面 $md5,PHP-MD5加密研究

md5(string,raw);

参数

描述

string

必需。规定要计算的字符串。

raw

可选。规定十六进制或二进制输出格式:TRUE - 原始 16 字符二进制格式; FALSE - 默认。32 字符十六进制数;

接口的签名验证:

function verify_app_key(){

$request = $GLOBALS['context']->request;

$db = $GLOBALS['context']->db;

if(!isset($GLOBALS['context']->config['api_version'])){

$api_version = 1;

}else{

$api_version = $GLOBALS['context']->config['api_version'];

}

//判断是否传过来了sign参数

if(!isset($request['key']) || !isset($request['sign']))

return return_value(-1,"缺少sign参数");

//从数据库中取出key和secret

$sql = "select * from api_user where `key` = '".$request['key']."'";

$api_user = $db->get_row($sql);

if(!$api_user){

return return_value(-1,"账号不存在");

}

//验证签名时间

if(isset($api_version) && $api_version == 2){

if($request['timestamp']+300 < time()){

return return_value(-1,"时间错误");

}

}

//将请求过来的sign赋值给$post_sign保存

$post_sign = $request['sign'];

//根据签名规则生成签名

$sign = create_sign($api_user['key'],$api_user['password'],$request);

//比对签名是否相同

if($post_sign != $sign){

return return_value(-1,"sign错误");

}

return return_value(1,"");

}

//生成签名函数

function create_sign($app_key,$app_secret,$data){

if(!isset($GLOBALS['context']->config['api_version'])){

$api_version = 1;

}else{

$api_version = $GLOBALS['context']->config['api_version'];

}

if(isset($api_version) && $api_version == 2){

unset($data['sign']);//去除传过来的sign

ksort($data);//对数据按照首字母顺序进行排序

$sign = "";

//排序完成后按照key.value组成字符串

foreach ($data as $k=>$v){

$sign .= $k.$v;

}

$sign = md5_3($app_key . $sign . $app_secret);

}else{

$sign = md5($app_key.$app_secret.add_day_time());

}

return $sign;

}

//md5_3加密方式(两次MD516位加密,一次32位加密后全部转换为大写)

function md5_3($str) {

return strtoupper(md5(md5(md5($str, true), true)));

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值