您的位置:首页 > 编程语言 > VB

致新手:用VB6解决一些有趣的问题(九)

2010-04-08 12:59 344 查看
临近结尾,我们来讲一下很少有人重视但是又很重要的一个内容

加密!

信息本无价,但是负载上对人有特殊意义的符号/内容以后就超出了载体本身的价值了

加密,就是保护数据,不给别人知道,这就是加密最终的目的

好的加密就是为了让破解更难



曾经写过一篇关于VB加密的:

http://blog.csdn.net/prsniper/archive/2009/08/26/4488023.aspx

内容主要是一个函数:



]Private Const strDefault As String = "h1d9y8x7"      '设置默认密码

'XOR加密/解密是相同的
Public Function Dencrypt(byval strSource As String, Optional ByVal strKey As String = "") As String
   Dim l As Long , strCrypt As String
   Dim iValue As Integer, jValue As Integer
     
   If Len(strKey) < 2 Then strKey = strDefault

   Mid(strKey, 2, 1) = Asc(X)
   
   For l = 1 To Len(strSource)
      '第一个XOR值

      iValue = Asc(Mid$(strSource, l, 1))      
      '第二个XOR值
      jValue = Asc(Mid$(strKey, ((l Mod Len(strKey)) + 1), 1))  //这里会出现反复算法
      '两个值XOR运算 比如asc("A") Xor asc("B") = 3 

      strCrypt = strCrypt + Chr(iValue Xor jValue)
   Next l
   
  Dencryption = strCrypt
End Function




有一门专门的学科叫密码学,不过在大侠这里,任何专业,任何学科,任何所谓的工程都是不存在的

我们遵循一条原则:逻辑(包括数学的逻辑和非数学的逻辑)



要更好的加密就需要了解破解,要了解破解就必须深入的认识加密

两者是个矛盾,相互作用!



加密分可逆和不可逆(当然这是我的分法,人们都分成对称加密和非对称加密),可逆就是用其他字符

(编码)替换原来的明文,让不知道密码的人无法理解原始的莫尔斯电码设置追溯到原始的暗号就是个例子



这种方法解密难度大,但是对于使用这本身也是个难题,为了更好的理解密文

人们使用了程序,用某一种计算方法,从密文推出明文,这种后来 覆盖了原来的查表加密

VBScript.Encode 用的是查查表加密,要的密码表也是查表得出的

没想到微软的人变态程度竟然和我有的比!!!



不可逆加密就是用一些特殊的算法,使原来的明文转成密文以后无法再还原回原来的明文

最典型的就是 MD5

MD5的算法相对复杂,我们就举一个更加简单的例子



14159265358...

这串是什么数字,不错!就是最卑鄙,最恶毒的面目全非脚!呵呵,是圆周率PI的小数部分.

我们把密码如12345按位置对应得到的字符是:

14159

但是14159无法对应回12345了,因为32345也可以对应得到14159

这就是不可逆,就这么简单的加密,也够破解者团团转的了

是不是最卑鄙最恶毒的面目全非脚呢



下面再说一说所谓的对称加密和非对称加密:

对称加密双方采用共同密钥,(当然这个密钥是需要对外保密的),这里讲一下非对称加密,这种加密方式存在两个密钥,密钥 -- 一种是公共密钥(正如其名,这是一个可以公开的密钥值),一种是私人密钥(对外保密)。 您发送信息给我们时,使用公共密钥加密信息。 一旦我们收到您的加密信息,我们则使用私人密钥破译信息密码(被我们的公钥加密的信息,只有我们的唯一的私钥可以解密,这样,就在技术上保证了这封信只有我们才能解读——因为别人没有我们的私钥)。 使用私人密钥加密的信息只能使用公共密钥解密(这一功能应用与数字签名领域,我的私钥加密的数据,只有我的公钥可以解读,具体内容参考数字签名的信息)反之亦然,以确保您的信息安全。



举个例子:我们的公共算法是MD5

我们把密码(32个字符)取中间16位(很多网游就是这么干),作为密码

我们把数据发给自己人,自己人用这个密码就可以解开原来的数据,而没有这个密码的人只能用暴力破解

这要花一年甚至十年,百年的时间



现在很多软件,所谓的CD-Key就是在注册表保存一个字符串,简简单单,当然这些也不是很重要

然而如果是政府部门或者一些机密数据就差火了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: