我来逐行代码给你分析吧,至于转成易语言的话就无能为力了。
因为本人不会易语言,所以你再找个会易语言的人根据我的翻译在写出易语言的代码来吧。
/*
*这一行是定义一个函数,函数名称是xor_str
*该函数接受两个参数,第一个参数名称是cipherurl,第二个是cipherkey
*由于js是弱类型语言,因此没有参数类型的限制。
*但是根据代码的意思可以得到这两个参数的类型都是字符串类型
*因此,在易语言下你可先定义一个方法,该方法接受两个字符串类型的参数
*/
var xor_str = function(cipherurl,cipherkey)
{
/*
*定义两个局部变量
*第一个变量名为i,类型是整数类型,初始值为0
*第二个变量名为url,类型是字符串类型,初始值为""
*/
var i = 0, url = '',
/*
*定义了一个全局变量keylen,初始值为第二个参数的长度
*因为第二个参数为字符串类型,所以这个变量的初始值就是这个字符串的长度
*/
keylen = cipherkey.length,
/*
*这里又定义了一个全局变量,变量名为urllen,初始值为第一个参数的长度
*因为第一个参数为字符串类型,所以这个变量的初始值就是这个字符串的长度
*/
urllen = cipherurl.length;
/*
*开始循环,循环条件为变量i小于变量urllen,每循环一次i的值加1
*/
for(;i < urllen;i++){
/*
*定义一个变量ch
*cipherurl.charCodeAt(i) 的意思是取得cipherurl变量内第i个字符的编码
*cipherkey.charCodeAt(i%keylen)的意思是取得第(i除以keylen的余数)个字符的编码
*cipherurl.charCodeAt(i) ^ cipherkey.charCodeAt(i%keylen)的意思是
*把第一个编码值和第二个编码值按二进制位进行异或运算
*即对两个数值的二进制写法进行比较
*只有当相同位置上的数字只有一个1时,才返回1,
*有两个1或者都是0则返回0,
*然后转换成十进制数值
*如:10001(二进制) ^ 01111(二进制)得到的二进制值为11110
*最终转成十进制是30
*/
var ch = cipherurl.charCodeAt(i) ^ cipherkey.charCodeAt(i%keylen);
/*
*String.fromCharCode(ch);意思是取得ch编码所在的字符
*url += String.fromCharCode(ch);意思是吧ch对应的字符累加到url变量上
*/
url += String.fromCharCode(ch);
} //结束循环
//返回url的值
return url;
};
我想我应该说的够清楚了,如果还帮不了你的话我没办法了。
//声明:我其实也不懂Java,以下代码仅作参考、仅作参考!
.版本 2
.程序集 窗口程序集1
.子程序 __启动窗口_创建完毕
.局部变量 xor_str, 文本型
.局部变量 cipherkey, xor_str
.局部变量 cipherurl, xor_str
cipherkey.length = 取文本长度 (“key”)
重定义数组 (cipherkey.charCodeAt, 假, cipherkey.length)
chartobytes (cipherkey.charCodeAt, 到字节集 (“key”))
cipherurl.length = 取文本长度 (“url”)
重定义数组 (cipherurl.charCodeAt, 假, cipherurl.length)
chartobytes (cipherurl.charCodeAt, 到字节集 (“url”))
' xor_str = 子程序1 (cipherkey, cipherurl)
' 输出调试文本 (xor_str)
.子程序 chartobytes, 逻辑型
.参数 charCodeAt, 字节型, 数组
.参数 charbin, 字节集
.局部变量 i, 整数型
.如果真 (取字节集长度 (charbin) ≠ 取数组成员数 (charCodeAt))
返回 (假)
.如果真结束
.计次循环首 (取数组成员数 (charCodeAt), i)
charCodeAt [i] = charbin [i]
.计次循环尾 ()
返回 (真)
.子程序 子程序1, 文本型
.参数 cipherkey, xor_str
.参数 cipherurl, xor_str
.局部变量 i
.局部变量 url, 文本型
.局部变量 keylen, 整数型
.局部变量 urllen, 整数型
.局部变量 ch, 字节型
i = 0
url = “”
keylen = cipherkey.length
urllen = cipherurl.length
.判断循环首 (i < urllen)
i = i + 1
ch = 位异或 (cipherurl.charCodeAt [i], cipherkey.charCodeAt [i % keylen])
url = url + 字符 (ch)
.判断循环尾 ()
返回 (url)
.版本 2
.数据类型 xor_str
.成员 length, 整数型
.成员 charCodeAt, 字节型, , "1"
不太懂javascript。猜想这是一段注册授权性质的代码吧?这种功能用易语言可以实现的啊。还要翻译干嘛!我说对了的话就速度采纳,速度滴!!