帮帮忙?怎么将这段Delphi函数改写成javascript函数?

大虾帮帮忙??如何将这段Delphi函数改写成javascript函数??
问题如题
Delphi函数如下:

function   encrypt(const   s:string):string;  
var
      j,k,tmp:word;
      tmpstr:string;
      key:array[1..18]   of   word=         (43,54,75,2,687,43,65,43,4,23,34,65,43,8,33,33,54,3);

begin
        k:=1;
        for   j:=1   to   length(s)   do      
        begin
              tmp:=ord(s[j])   xor   key[k];  
              tmpstr:=tmpstr+inttohex(tmp,2);
              k:=k+1;
        end;
        result:=tmpstr;
end;


------解决方案--------------------
不会JS,会一点点VBS,看你在另一个零分贴里说可以用VBS写,那我就用VBS写了:


<%
Function EnCrypt( S )
Dim Keys(18)
Dim j,tmp
Key = array(43,54,75,2,687,43,65,43,4,23,34,65,43,8,33,33,54,3)
for j = 1 to Len(S) step 1
tmp = ASC(Mid(S,j,1)) xor Key(j-1)
tmpstr = tmpstr & Right( "00 " & Hex(tmp), 2)
Next
EnCrypt = tmpstr
end function
%>

<%
'上面是函数体部分,下面是在ASP里搞的测试。
response.write EnCrypt( "ABCD ")
%>
------解决方案--------------------
Function Encrypt(S)
Dim J,K,Tmp
Dim TmpStr
Dim Key,Keys
Dim SS
SS=Split(S, " ")
Key= "43,54,75,2,687,43,65,43,4,23,34,65,43,8,33,33,54,3 "
Keys=Split(Key, ", ")
K=1
For J=1 To Len(s)
Tmp=Asc(SS(i)) Xor Keys(k)
TmpStr=TmpStr+Hex(Tmp)
k=k+1
Next
Encrypt=TmpStr
End Function
行了,测试通过了.你是在用asp吗?如果是的话,你可以用MD5来加密. <br>
用以上加密则会出现很长代码的输出值. <br>
如你的S和或是中文就会输出一个很长的值 <br>
------解决方案--------------------
JavaScript 的
function Encrypt(s)
{
var k, tmp, tmpstr;
var key_S = "43,54,75,2,687,43,65,43,4,23,34,65,43,8,33,33,54,3 ";
key = key_S.split( ", ");
tmpstr = " ";
k = 0;
for(var j = 0; j < s.length; j++){
tmp = (s.charAt(j).charCodeAt() ^ key[k].valueOf(Number));
s_hex = tmp.toString(16);
while (s_hex.length <2){
s_hex = '0 ' + s_hex;
}
tmpstr = tmpstr + s_hex;
k++;
}
return tmpstr.toUpperCase();
}