1700416921
1700416922
1700416923
在因特网上经过加密的数据也难免被窃取,因此就要先设法做到即便数据被窃取,其内容也难以被破解。为此可以把密钥设成多位数而不仅仅是一位数。下面,就试着以三位数345为密钥,通过XOR运算来进行加密(如代码清单10.5所示)。将明文中的第一个字母与3做XOR运行,第二个字母与4做XOR运算,第三个字母与5做XOR运算,从第四个字母开始,依次与3,4,5做XOR运算,依次类推(如图10.6所示)
1700416924
1700416925
代码清单10.5 通过与三位数进行XOR运算实现加密和解密
1700416926
1700416927
Dim key(2)
1700416928
1700416929
key(0)=3
1700416930
1700416931
key(1)=4
1700416932
1700416933
key(2)=5
1700416934
1700416935
text1=InputBox(“请输入明文或密文”)
1700416936
1700416937
text2=””
1700416938
1700416939
For i=1 To Len(text1)
1700416940
1700416941
letter=Mid(text1,i,1)
1700416942
1700416943
text2=text2&Chr(Asc(letter) Xor key((i-1)Mod3))
1700416944
1700416945
Next
1700416946
1700416947
MsgBox text2
1700416948
1700416949
图10.6 代码清单10.5的执行结果
1700416950
1700416951
1700416952
1700416953
1700416954
如果仅用一位数作为密钥,那么只需要从0-9尝试十次就能破解密文。但如果用三位数密钥,那么就有从000-999的1000种可能,如果更进一步把密钥的位数增加到十位,那么就需要1010=100亿次才能破解。就算使用一秒进行100万次尝试的计算机,破解此密文也需要花费100亿/100万次/秒=10000秒≈2.78小时。密钥每增加1位,破解所花费的时间就增加10倍,密钥再进一步增长到16位的话,破解时间就是2.78小时*1000000≈317年,从所需的时间上来看,可以说破解是不可能的。
1700416955
1700416956
1700416957
1700416958
1700416960
计算机是怎样跑起来的 10.4 适用于因特网的公开密钥加密技术
1700416961
1700416962
前面几节讲解的加密技术都属于“对称密钥加密技术”,也称为“秘密密钥加密技术”(如图10.7所示)
1700416963
1700416964
这种加密技术的特征是在加密和解密的过程中使用数值相同的密钥。因此,要使用这种技术,就必须事先把密钥的值作为只有发送者和接收者才知道的秘密保护好(如图10.7(1)所示)。虽然随着密钥位数的增加,破解难度也会增大,但事先仍不得不考虑一个问题:发送者如何才能把密钥告诉接收者呢?挂号信?假设有100名接收者,那么发送者要寄出100封信,非常麻烦,而且这样也无法防止通信双方以外的其他人知道密钥,再说寄送密钥也要花费时间。因特网的存在应该意味着用户可以实时地与世界各地的人们交换信息。因为对称密钥加密技术不适合在因特网中使用。
1700416965
1700416966
但有些人想到只要让解密时的密钥不同于加密时的密钥,就可以克服对称密钥加密技术的缺点。而这种加密技术称为“公开密钥加密技术”
1700416967
1700416968
在公开密钥加密技术中,用于加密的密钥可以公开给全世界,因此称为“公钥”,而用于解密的密钥是只有自己才知道的秘密,因此称为“私钥”。举例来说,假设笔者的公钥是3,私钥是5(实际中会把位数更多的两个数作为一对儿密钥使用)。笔者通过因特网宣布“矢泽久雄的公钥是3!”这之后当诸位要向笔者发送数据时,可以用这个公钥3加密数据了。这样就算加密后的密文被人窃取了,只要他还不知道笔者的私钥就不可能解密,从而保证了数据的安全性,而收到密文的笔者,则可以使用只有笔者自己才知道的私钥5进行解密(如图10.7(2)所示)。怎么样?这个技术很棒吧!
1700416969
1700416970
图10.7 对称密钥加密技术和公开密钥加密技术
[
上一页 ]
[ :1.700416921e+09 ]
[
下一页 ]