满意答案
dret9701
推荐于 2016.03.06
采纳率:40% 等级:9
已帮助:917人
要进行逆运算需要知道结果文本。
考虑加密过程:
对字符a, 将其与字符c进行异或, 将异或结果作为加密结果,然后更新c, 即b=a异或c; 如果已知c则 b异或c=(a异或c)异或c = a异或c异或c=a,即只需将结果b异或c即得原始字符。
加密中每次会更新c,c都是上次的加密结果,所以对已知的结果文本其最后一个字符的c是其前一个字符,除第一个结果字符的c是3外,所有结果字符的c都是其前一个结果字符,于是对第x>1个原文本字符有 a=(第x个结果文本字符) 异或 (第x-1个结果文本字符);第一个原文本字符=第一个结果文本字符 异或 3.
没用过易语言,所以不知道其语法,大概算法如下:
结果文本= "xxxxxxx"
原文本=""
c=结果文本倒数第二字符(如果结果文本长度超过2的话)
计次反向循环(从结果字符长度开始 到 第二个字符截止 x)
c=取代码(结果文本, x-1)
b=取代码(结果文本, x)
a=b异或c
原文本 = 原文本+字符(a)
计次循环尾()
b=取代码(结果文本,0) -----------取结果文本第一个字符
a= b 异或 3
原文本 = 原文本 + 字符(a)
调试输出(原文本)追问: 谢谢。我先慢慢理解你的回答先~有不懂的再问你。
00分享举报