打字猴:1.700416859e+09
1700416859
1700416860 text2=””
1700416861
1700416862 For i=1 To Len(text1)
1700416863
1700416864   letter=Mid(text1,i,1)
1700416865
1700416866   text2=text2&Chr(Asc(letter) Xor key)
1700416867
1700416868 Next
1700416869
1700416870 MsgBox text2
1700416871
1700416872 XOR运算的有趣之处在于,用XOR运算加密后的密文,可以通过相同的XOR运算解密。也就是说一个程序既可用于加密又可用于解密,很方便(如图10.3所示)
1700416873
1700416874 图10.3 代码清单10.3执行结果
1700416875
1700416876
1700416877
1700416878
1700416879 XOR运算法则是把两个数据先分别用二进制表示,然后当一个数据中的某一位与另一个数据中的1相对时,就将这一位反转(若这一位是0就变成1,是1就变成0)(异或算法的法则也可以描述成如果对应位置上的两个二进制数a,b的值相同,则结果为0.如果a,b的值不相同,则结果为1)。因为是靠反转数字实现的加密,所以只要再反转一次就可以解密。图10.4展示了密钥3(用二进制表示是00000011)和字母N(其字符编码用二进制表示是01001110)做XOR运算的结果,请确认通过反转和再反转还原出字母N的过程:N的字符编码先和3进行XOR运算,结果是字母M的字符编码;M的字符编码再和3进行XOR运算,结果就又回到了N的字符编码
1700416880
1700416881 图10.4 通过反转和再反转即可还原
1700416882
1700416883
1700416884
1700416885
1700416886
1700416887
1700416888
1700416889 计算机是怎样跑起来的 [:1700412727]
1700416890 计算机是怎样跑起来的 10.3 密钥越长,解密越困难
1700416891
1700416892 在因特网环境中,会有很多不固定的人群相互收发经过加密处理的数据。一般情况下,会将所使用的加密方式公开,而只对密钥的值保密。但令人遗憾的是,这个世界上还是有坏人的,有些人会窃取那些并不是发送给他们的加密数据,企图破解后用于其他目的。尽管这些人并不知道密钥的值,但他们会利用计算机强大的计算能力,用密钥所有可能的值去试着破解。例如,要想破解用XOR运算加密得到的密文MJHHFJ,程序只要把0-9这几个值分别作为密钥都尝试一遍就能做到(如代码清单10.4,图10.5所示)
1700416893
1700416894 代码清单10.4 通过XOR运算破解密文的程序
1700416895
1700416896 cipher=InputBox(“请输入密文”)
1700416897
1700416898 plaintext=””
1700416899
1700416900 For key=0 To 9
1700416901
1700416902   Plaintext=plaintext&”密钥”&Cstr(key)&”:”
1700416903
1700416904   For i=1 To Len(cipher)
1700416905
1700416906 letter=Mid(cipher,i,1)
1700416907
1700416908 plaintext=plaintext&Chr(Asc(letter) Xor key)
[ 上一页 ]  [ :1.700416859e+09 ]  [ 下一页 ]