ABROAD:开发通信“一次一密”功能

2013-11-16 1,515 0 开发! 大超超。

观察下面截图HTML源代码第14行_D_()为解密函数(_D6_()base64_decodebase64解密解码函数),有两个参数:加密后的串和密钥,主要通过对密钥的“一次一密”实现了加密后的串的一次一密。

可以看到在console里面被加密的php数组成功解析成js对象,而且数据完整、无误。

当然这种加密并无太大实际用处,只是正好把学到的信息安全思想理念用到了实际开发中。

131116一次一密结果.png

附上PHP端函数及调用代码:

// 产生加密后的js串,通过客户端解密 @ 2013-11-16 10:27:21
function jsOnetimeEncrypt($s){
    $rand_salt = (substr(md5(mt('-d2')), 21));
    return 'eval(_D_("'.encrypt($s, 1, $rand_salt).'",_D6_("'.base64_encode(jsSalt($rand_salt)).'")));';
}
      
// 调用
jsOnetimeEncrypt('G='.enjson($GLOBALS['js_cfg_']).';'.php2jsArray($GLOBALS['js_language_'], 'L'));
      
// $GLOBALS['js_cfg_']是js全局变量,如下
$js_cfg_ = array(
    'ROOT_URL' => ROOT_URL,
    'module' => $module,
    'act' => $act,
    'ckpath'   => sConf('cookie_path'),
    'ckprefix' => sConf('cookie_prefix'),
    'salt'     => jsSalt()
);
if( DEBUG==1 ){
    $js_cfg_['debug'] = 1;
    $js_cfg_['uid'] = uid();
    $js_cfg_['time'] = $time;
}

 



声明: 本文由大超超。原创编译,转载请保留链接: http://www.thinkful.cn/archives/324.html