关于一个key值验证问题

dyydingding 2007-07-04 01:56:48
各位朋友 我想要从一个html页面通过
<script src="servlet?key=123456" type="text/javascript"></script>
的方式来向servlet发出一个请求,通过servlet得到key参数同时得到页面地址栏里的地址。例如页面显示地址为“http://localhost:8080/aaa/index.html”。得到如上地址,得到一个对key值的算法,可给您一个javascript例子参考
例:
function getApiKey(url) {
if (url.length == 0)
alert("请输入您的网址");
var arr = [1518500249, 1859775393, 2400959708, 3395469782];

url += String.fromCharCode(128);
var len = url.length;
var l1 = Math.ceil(len / 4) + 2;
var l2 = Math.ceil(l1 / 16);
var arr2 = new Array(l2);

for (var g = 0; g < l2; g++) {
arr2[g] = new Array(16);
for (var h = 0; h < 16; h++) {
arr2[g][h] = url.charCodeAt(g * 64 + h * 4) << 24 | url.charCodeAt(g * 64 + h * 4 + 1) << 16 | url.charCodeAt(g * 64 + h * 4 + 2) << 8 | url.charCodeAt(g * 64 + h * 4 + 3);
}
}

arr2[l2 - 1][14] = (len - 1 >>> 30) * 8;
arr2[l2 - 1][15] = (len - 1) * 8 & 4294967295;

var v1 = 1732584193;
var v2 = 4023233417;
var v3 = 2562383102;
var v4 = 271733878;
var v5 = 3285377520;
var v = new Array(80);
var i1, i2, i3, i4, i5;

for (var g = 0; g < l2; g++) {
for (var M = 0; M < 16; M++) {
v[M] = arr2[g][M];
}
for (var M = 16; M < 80; M++) {
v[M] = cal2(v[M - 3] ^ v[M - 8] ^ v[M - 14] ^ v[M - 16], 1);
}
i1 = v1;
i2 = v2;
i3 = v3;
i4 = v4;
i5 = v5;
for (var M = 0; M < 80; M++) {
var caseValue = Math.floor(M / 20);
var value = cal2(i1, 5) + cal1(caseValue, i2, i3, i4) + i5 + arr[caseValue] + v[M] & 4294967295;
i5 = i4;
i4 = i3;
i3 = cal2(i2, 30);
i2 = i1;
i1 = value;
}
v1 = v1 + i1 & 4294967295;
v2 = v2 + i2 & 4294967295;
v3 = v3 + i3 & 4294967295;
v4 = v4 + i4 & 4294967295;
v5 = v5 + i5 & 4294967295;
}

return cal3(v1) + cal3(v2) + cal3(v3) + cal3(v4) + cal3(v5);
}

function cal1(caseValue, v1, v2, v3) {
switch (caseValue) {
case 0:
return v1 & v2 ^ ~v1 & v3;
case 1:
return v1 ^ v2 ^ v3;
case 2:
return v1 & v2 ^ v1 & v3 ^ v2 & v3;
case 3:
return v1 ^ v2 ^ v3;
}
}

function cal2(v1, v2) {
return v1 << v2 | v1 >>> 32 - v2;
}

function cal3(value) {
var rValue = "";
for (var i = 7; i >= 0; i--) {
var iv = value >>> i * 4 & 15;
rValue += iv.toString(16);
}
return rValue;
}
然后在上例中得到一个skey,把得到的和传来的key值进行对比 哪位朋友做过类似的 可否指点下 最好能有代码相助 真是挺急的 希望哪为朋友速度解决问题 我愿意加分
...全文
213 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
许飘大叔 2007-07-05
  • 打赏
  • 举报
回复
复杂,哈哈,我学习
njtucomputer 2007-07-05
  • 打赏
  • 举报
回复
页面怎么生成的 就怎么在servlet中验证啊 不过我没看你的JS脚本

你生成KEY 验证KEY的目的是啥啊
dyydingding 2007-07-04
  • 打赏
  • 举报
回复
需要解决的是 我想要在servlet中验证key 不知道在servlet中怎么写这个程序 有点晕 麻烦各位朋友帮忙研究下!!!
zqrqq 2007-07-04
  • 打赏
  • 举报
回复
LZ需要解决什么问题,什么问题还没有解决,什么问题已经解决?

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧