Bootstrap

易语言 位异或c,位异或运算的逆向 (易语言)

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

dret9701

推荐于 2016.03.06

02ae427d08e371d7e90d5b995e828d6d.png

采纳率: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分享举报

;