改了,但不运行结果不对,感觉本身算法有问题:
.版本 2
.支持库 spec
.子程序 解密c
.参数 str, 文本型
.局部变量 i, 整数型
.局部变量 a, 整数型
.局部变量 b, 整数型
.局部变量 d1, 整数型
.局部变量 d2, 整数型
.局部变量 retBin, 文本型, , , 字节集的样子
.局部变量 retStr, 文本型
.局部变量 strA, 文本型
.局部变量 strB, 文本型
retStr = “”
retBin = “{”
i = 1
.判断循环首 (i < 取文本长度 (str)) ' 两个两个地取出字符
strA = 取文本中间 (str, i, 1) ' 字符1
strB = 取文本中间 (str, i + 1, 1) ' 字符2
a = GetIndex (strA) ' 位置1; //获得str在ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz中的位置
b = GetIndex (strB) ' 位置2;
d1 = b ÷ 8 ' 取商
d2 = b % 8 ' 取余数
' 调试输出 (b, d1, d2)
' cout<<char(d1*0x3e + a ^ d2); //输出还原后的字符
调试输出 (strA + strB + “ -----> ” + 字符 (d1 × 62 + 位异或 (a, d2)))
retStr = retStr + 字符 (d1 × 62 + 位异或 (a, d2))
retBin = retBin + 到文本 (到整数 (d1 × 62 + 位异或 (a, d2))) + “,”
i = i + 2
.判断循环尾 ()
retBin = 取文本左边 (retBin, 取文本长度 (retBin) - 1) + “}”
调试输出 (retStr) ' 字符zFsEqDFIJMIMrFGJDMHMxDFKpEnBrDJMsCJMmDtDDIrEoExDvAqFGKyEsCJKrCDL 还原后是827CCB0EEA8A706C4C34A16891F84E7B
调试输出 (retBin)
' {56,50,49,69,77,74,48,67,63,75,56,67,49,48,50,77,52,77,53,60,67,51,54,56,59,51,66,56,52,71,53,62}'本程序的
' {56,50,55,67,67,66,48,69,69,65,56,65,55,48,54,67,52,67,51,52,65,49,54,56,57,49,70,56,52,69,55,66}'正确的
.子程序 GetIndex, 整数型, , 取字符位置
.参数 char, 文本型
.局部变量 index, 整数型
index = 寻找文本 (“ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz”, char, , 假)
返回 (index)
|