|
发表于 2012-8-17 13:45:37
|
显示全部楼层
北京市北京市
function _getAntiCSRFToken(objConfig){
objConfig=objConfig||{};//如果有objConfig就使用objConfig.如果没有就创建一个空对像.
var salt=objConfig.salt||CONST_SALT;//如果objConfig中定义了salt就使用它.如果没有就使用全局属性CONST_SALT.
var skey=objConfig.skey||QZFL.cookie.get("skey");//获取skey在objConfig中或者cookies中.objConfig优先.
var md5key=objConfig.md5key||CONST_MD5_KEY;//获取md5key在objConfig中或者cookies中.objConfig优先.
var hash=[],ASCIICode;//定义数组hash
hash.push((salt<<5));//按位左移 <<
for(var i=0,len=skey.length;i<len;++i){
ASCIICode=skey.charAt(i).charCodeAt();//skey按位取asciII码.
hash.push((salt<<5)+ASCIICode);//按位左移5加上ASCIICode的值.(也就是易中的char("a")=97)
salt=ASCIICode;//ASCIICode赋值给salt
}
var md5str=_md5(hash.join('')+md5key);//合并数组到字符串.
return md5str;//返回值.
};
1变量初始化.分别对objConfig,salt,skey,md5key
2.位移salt
3.把skey按位与salt<<5相加
4.把结果结合成字符串返回
==============================================
按位左移运算符 (<<)
左移表达式的位。
result = expression1 << expression2
参数
result
任何变量。
expression1
任何表达式。
expression2
任何表达式。
说明
<< 运算符把 expression1 的所有位向左移 expression2 指定的位数。例如:
var temp
temp = 14 << 2
变量 temp 的值为 56,因为 14 (即二进制的 00001110)向左移两位等于 56 (即二进制的 00111000)。 |
|