对文本文件的加密解密

原理:

        使用密码文本的Ascii值与原文本文件的Byte类型进行Xor异或运算进行加密,由于异或运算可逆,所以,再次使用密码文本的Ascii值与加密文本文件进行Xor运算,就可解密。
        以二进制方式打开txt文件,将txt文件内容存入Byte型的动态数组中,动态数组的长度为Lof(文件号)

       1.将密码文本中的每个字符转换为Ascii值,并存入另一个Byte型的动态数组中,数组的长度为Len(密码文本)
       2.以二进制方式打开txt文件,读取txt文件内容存入Byte型的动态数组中。
       3.使用上两步存入的密码数组与保存文件内容的数组进入Xor异或运算,然后将运算的结果保存至另一个新的动态数组中。
       4.最后将存异或结果的变量的值存入文本文件中。
       由于异或运算是可逆的,所以再次执行以上步骤,可对加密文件进行解密。

       完整代码如下:

       Dim databuff()  As Byte '定义数组用于存放文件内容
       Dim addbuff() As Byte '定义数组用于存放加密后的文件内容
       Dim password() As Byte '定义数组用于存放密码的ASCII值
       Dim filename As String

       Private Sub File1_Click() '单击文件时,显示文件内容
              filename = Dir1.Path + File1.filename
              Text1.Text = filename
    
               If filename = "" Then Exit Sub
    
               Open filename For Binary As #1
               ReDim databuff(LOF(1)) As Byte  'LOF(1)'计算文件的长字,以字节为单位
               Get #1, , databuff '将文件中的字符读入到databuff数组中
              Close #1
              Text2.Text = StrConv(databuff, vbUnicode)
       End Sub

     Private Sub Command1_Click()
              Dim j As Integer
              Dim password_len As Integer
              password_len = Len(Text3.Text)
              ReDim password(password_len) As Byte
    
             '把密码转化为ASCII码,即取出密码中的每个字符,将转化为ascii值存入password数组中
              For i = 0 To password_len - 1 
                  password(i) = Asc(Mid(Text3.Text, i + 1, 1)) 'mid返回指定数量的字符 ASC返回一个 Integer,代表字符串中首字母的字符代码。
              Next
   
             If filename = "" Then Exit Sub
            Open filename For Binary As #1 '读取要加密的文件内容
           ReDim databuff(LOF(1))
           Get #1, , databuff
           Close #1
    
           ReDim addbuff(UBound(databuff)) As Byte
   
         For i = 0 To UBound(databuff)
                 If j >= password_len Then '循环使用密码
                        j = 0
                 Else
                         j = j + 1
                 End If
               addbuff(i) = databuff(i) Xor password(j) '进行异或运算
         Next
   
          Open filename For Binary As #1 '把加密后的内容写入文件
           Put #1, , addbuff
          Close #1
         Text1 = StrConv(addbuff, vbUnicode) '显示加密后的文件内容
           Text2.Text = ""
   
End Sub

阅读更多
换一批

没有更多推荐了,返回首页