以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  加密与解密的问题!!!谢谢  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=7870)

--  作者:雨中的泪
--  发布时间:2010/8/13 20:28:00
--  加密与解密的问题!!!谢谢

Dim dlg As New SaveFileDialog   \'指定一个新的SaveFileDialog
dlg.Filter= "上报文件|*.DSB"   \'设置筛选器
dlg. title= "生成上报文件"
dlg.OverwritePrompt = False
If dlg.ShowDialog = DialogResult.Ok Then   \'如果用户单击了确定按钮
    If FileSys.FileExists(dlg.filename) Then    \'如果指定的文件存在
        If Messagebox.Show("有同名文件存在,是否删除?", "提示", MessageBoxButtons.YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then
            FileSys.DeleteFile(dlg.filename,2,2)  \'则彻底删除之
        Else
            Return
        End If
    End If
    Dim ex As New Exporter
    ex.SourceTableName = "调资基础数据"   \'指定导出表
    ex.Format = "Access"   \'指定导出文件格式
    ex. PassWord = "TZX_GWY_JT_8888"  \'用此属性指定目标文件的密码
    ex.filepath =  dlg.filename    \'指定目标文件
    ex.NewTableName = "调资基础数据"        \'指定导出后的表的名称
    ex.Export()    \'开始导出数据
    FileSys.CopyFile(dlg.filename, dlg.filename & ".bak",False)
    FileSys.DeleteFile(dlg.filename, 2, 2)
    EncryptFile(dlg.filename & ".bak", dlg.filename, "88881")
    FileSys.DeleteFile(dlg.filename & ".bak", 2, 2)
    MessageBox.Show("上报数据生成完成!", "提示", MessageBoxButtons.OK,MessageBoxIcon.Information)
End If


--  作者:雨中的泪
--  发布时间:2010/8/13 20:30:00
--  

用上述代码生成后缀名为DSB的上报文件~~~!!!

然后后缀名改为DBF,然后用以下代码,恢复!!!

If MessageBox.Show( "恢复数据库操作将清空数据库,确定是否清空?","提示",MessageBoxButtons. YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then
DataTables("调资基础数据").DataRows.Clear()  \'清空指定表数据
Else
     Return       \'点击否终止代码的执行
End If
Dim dlg As New OpenFileDialog    \'定义一个新的OpenFileDialog
dlg.Filter= "备份文件|*.DBF"        \'设置筛选器
dlg. title= "数据恢复"  
If dlg.ShowDialog = DialogResult.Ok Then       \'如果用户单击了确定按钮
FileSys.CopyFile(dlg.filename, dlg.filename & ".bak",False)
FileSys.DeleteFile(dlg.filename, 2, 2)
DecryptFile (dlg.filename & ".bak", dlg.filename, "8888")
FileSys.DeleteFile(dlg.filename & ".bak", 2, 2)
Dim ip As New Merger  
ip.SourcePath = dlg.filename  \'指定数据文件
ip.SourceTableName = "调资基础数据"      \'指定要合并的表
ip.Format = "Access" \'指定合并文件格式
ip. PassWord = "TZX_GWY_JT_8888"  \'用此属性指定合并文件的密码
ip.Fields = "单位名称"   \' 指定要合并的字段(列)
ip. DataTableName ="数据接收临时判断" \'合并后的表名
ip. Merge()   \'开始合并
Dim dws As List(Of String)       \'定义一个字符型数组集合
 dws = DataTables("调资基础数据").GetUniqueValues("", "单位名称") \'列出所有单位
 For Each dw As String In dws \'逐个单位判断
    Dim dr As DataRow = DataTables("数据接收临时判断").find("[单位名称] = \'" & dw & "\'")
        If dr IsNot Nothing Then
           If MessageBox.Show( dw & "的记录已经存在,确定是否请删除?","提示",MessageBoxButtons. YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then
     DataTables("调资基础数据").DeleteFor("[单位名称] = \'" & dw & "\'")
Else
FileSys.CopyFile(dlg.filename, dlg.filename & ".bak",False)
     FileSys.DeleteFile(dlg.filename, 2, 2)
     EncryptFile(dlg.filename & ".bak", dlg.filename, "8888")
     FileSys.DeleteFile(dlg.filename & ".bak", 2, 2)
     Return       \'点击否终止代码的执行
End If
      End If
 Next
 Dim mg As New Merger
 mg.SourcePath = dlg.filename
 mg.SourceTableName = "调资基础数据"
 mg.Format = "Access"
 mg. PassWord = "TZX_GWY_JT_8888"
 mg.DataTableName = "调资基础数据"
 mg.Merge()
 MessageBox.Show("数据恢复完成!!!","提示",MessageBoxButtons.OK,MessageBoxIcon.Question)
DataTables("数据接收临时判断").DataRows.Clear()  \'清空指定表数据
FileSys.CopyFile(dlg.filename, dlg.filename & ".bak",False)
     FileSys.DeleteFile(dlg.filename, 2, 2)
     EncryptFile(dlg.filename & ".bak", dlg.filename, "8888")
     FileSys.DeleteFile(dlg.filename & ".bak", 2, 2)
Else
 MessageBox.Show( "数据库已被清空!!!","提示",MessageBoxButtons. OK,MessageBoxIcon.Warning)
   End If


--  作者:雨中的泪
--  发布时间:2010/8/13 20:32:00
--  

提示不可识别的文件格式!!!

文件后缀名再改为DSB后,用以下接收代码接收:

Dim dlg As New OpenFileDialog    \'定义一个新的OpenFileDialog
dlg.Filter= "上报文件|*.DSB"        \'设置筛选器
dlg. title= "接收上报文件"  
If dlg.ShowDialog = DialogResult.Ok Then       \'如果用户单击了确定按钮
FileSys.CopyFile(dlg.filename, dlg.filename & ".bak",False)
FileSys.DeleteFile(dlg.filename, 2, 2)
DecryptFile (dlg.filename & ".bak", dlg.filename, "88881")
FileSys.DeleteFile(dlg.filename & ".bak", 2, 2)
Dim ip As New Merger  
ip.SourcePath = dlg.filename  \'指定数据文件
ip.SourceTableName = "调资基础数据"      \'指定要合并的表
ip.Format = "Access" \'指定合并文件格式
ip. PassWord = "TZX_GWY_JT_8888"  \'用此属性指定合并文件的密码
ip.Fields = "单位名称"   \' 指定要合并的字段(列)
ip. DataTableName ="数据接收临时判断" \'合并后的表名
ip. Merge()   \'开始合并
Dim dws As List(Of String)       \'定义一个字符型数组集合
 dws = DataTables("调资基础数据").GetUniqueValues("", "单位名称") \'列出所有单位
 For Each dw As String In dws \'逐个单位判断
    Dim dr As DataRow = DataTables("数据接收临时判断").find("[单位名称] = \'" & dw & "\'")
        If dr IsNot Nothing Then
           If MessageBox.Show( dw & "的记录已经存在,确定是否请删除?","提示",MessageBoxButtons. YesNo,MessageBoxIcon.Question) = DialogResult.Yes Then
     DataTables("调资基础数据").DeleteFor("[单位名称] = \'" & dw & "\'")
Else
     FileSys.CopyFile(dlg.filename, dlg.filename & ".bak",False)
     FileSys.DeleteFile(dlg.filename, 2, 2)
     EncryptFile(dlg.filename & ".bak", dlg.filename, "88881")
     FileSys.DeleteFile(dlg.filename & ".bak", 2, 2)
     Return       \'点击否终止代码的执行
End If
      End If
 Next
 Dim mg As New Merger
 mg.SourcePath = dlg.filename
 mg.SourceTableName = "调资基础数据"
 mg.Format = "Access"
 mg. PassWord = "TZX_GWY_JT_8888"
 mg.DataTableName = "调资基础数据"
 mg.Merge()
 MessageBox.Show("接收上报数据完成!!!","提示",MessageBoxButtons.OK,MessageBoxIcon.Question)
DataTables("数据接收临时判断").DataRows.Clear()  \'清空指定表数据
FileSys.CopyFile(dlg.filename, dlg.filename & ".bak",False)
     FileSys.DeleteFile(dlg.filename, 2, 2)
     EncryptFile(dlg.filename & ".bak", dlg.filename, "88881")
     FileSys.DeleteFile(dlg.filename & ".bak", 2, 2)
 End If

 

还是不可识别的文件格式!!!

如何处理?谢谢


--  作者:雨中的泪
--  发布时间:2010/8/13 20:38:00
--  

有没有办法直接判断加密的文件加密和解密的密钥是否相同,相同就直接读入!!不相同就直接提示!!!

谢谢


--  作者:雨中的泪
--  发布时间:2010/8/13 20:56:00
--  

有没有办法直接判断加密的文件加密和解密的密钥是否相同,相同就直接读入!!不相同就直接提示!!!

谢谢


--  作者:雨中的泪
--  发布时间:2010/8/13 21:07:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:rsgzglxt.rar


--  作者:雨中的泪
--  发布时间:2010/8/13 21:32:00
--  

各位老大有办法没?

 


--  作者:e-png
--  发布时间:2010/8/13 23:49:00
--  
解读代码要高水平的人。你最好1、2、3;;;;;N的一步步说清楚,别人才好测试。
--  作者:雨中的泪
--  发布时间:2010/8/14 10:58:00
--  

有没有办法直接判断一个已经加密的ACCESS文件,解密的密钥是否和加密的密钥是否相同,相同就直接读入设计的系统!!不相同就直接提示!!!

谢谢


--  作者:狐狸爸爸
--  发布时间:2010/8/14 11:15:00
--  

不可以判断。