在易语言里,加密算法只需要作为参数,求rc4算法易语言源码,不是用加密数据命令,而是

2025-04-06 08:48:05
推荐回答(1个)
回答1:

.版本 2

.子程序 加密为rc4, 文本型, 公开, 用RC4算法对文本进行加密
.参数 加密的数据, 文本型, , 欲加密的文本
.参数 加密密钥, 文本型, 可空, 用作加密的密码
.局部变量 临时, 字节集
.局部变量 s, 字节型, , "256"
.局部变量 k, 字节型, , "256"
.局部变量 i, 整数型
.局部变量 j, 整数型
.局部变量 y, 整数型
.局部变量 outstr, 文本型
.局部变量 temp, 字节型
.局部变量 x, 整数型
.局部变量 t, 整数型
.局部变量 aaa, 文本型

临时 = 到字节集 (文本)
.计次循环首 (256, i)
    s [i] = i - 1
.计次循环尾 ()
j = 1
.计次循环首 (256, i)
    .如果真 (j > 取文本长度 (密码))
        j = 1
    .如果真结束
    k [i] = 取代码 (取文本中间 (密码, j, 1), )
    j = j + 1
.计次循环尾 ()
j = 0
.计次循环首 (256, i)
    j = (j + s [i] + k [i]) % 256 + 1
    temp = s [i]
    s [i] = s [j]
    s [j] = temp
.计次循环尾 ()
i = 0
j = 0
.计次循环首 (取字节集长度 (临时), x)
    i = (i + 1) % 256 + 1
    j = (j + s [i]) % 256 + 1
    temp = s [i]
    s [i] = s [j]
    s [j] = temp
    t = (s [i] + s [j] % 256) % 256 + 1
    y = s [t]
    aaa = 到十六进制文本 (位异或 (临时 [x], y))
    outstr = outstr + 选择 (取文本长度 (aaa) > 1, “”, “0”) + aaa + “,”
.计次循环尾 ()
返回 (outstr)

.子程序 到十六进制文本, 文本型
.参数 数值, 整数型, ,

返回 (多项选择 (右移 (数值, 4) + 1, “0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “A”, “B”, “C”, “D”, “E”, “F”) + 多项选择 (位与 (数值, 15) + 1, “0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “A”, “B”, “C”, “D”, “E”, “F”))