Visual Basic.NET 7.x (2002/03)Visual Basic 9 (2008)Visual Basic 8 (2005)Windows Vista.NET 1.0Windows 2003.NET 1.1.NET 3.0Windows 2000设计 / 图形架构高级Windows XP.NET 2.0XMLWindows Forms初学者中级开发Windows.NETVisual Basic
P2P 安全文件,使用密码加密和解密任何文件






3.53/5 (11投票s)
通过密码加密和解密来保护任何文件。 它加密文件并保存为带有二进制格式的安全 XML,并将文件密码存储为自定义 PK 加密器例程。

引言
本文讨论了如何通过使用密码加密来保护任何文件。 下载用 VB.NET 编写的 P2P 安全文件的源代码。 它加密文件并将其保存为带有二进制格式的安全 XML,并将文件密码存储为自定义 PK 加密器例程。
背景
用 Visual Basic .NET 编程语言编写的此 P2P 安全文件程序源代码能够加密和解密任何文件。 它将任何文件转换为字节数组,并将字节数组转换为流,并将其写入扩展名为 *.sp2p 的 XML 文件中。
Using the Code
逻辑
步骤 1:首先选择一个文件。 将文件内容转换为字节数组。 为此,我们创建 FileStream
对象并将此 FileStream
对象传递给 BinaryReader
以获取原始字节。
Dim Fs As New System.IO.FileStream(FileName, System.IO.FileMode.Open)
Dim bn As New System.IO.BinaryReader(Fs)
步骤 2:现在创建一个 DataTable
到 DataSet
以存储所有详细信息,包括文件名、二进制内容和加密密码。
Dim DsImg As New DataSet
Dim Dt As New DataTable("Images")
Dt.Columns.Add(New DataColumn("sysid", _
System.Type.GetType("System.String")))
Dt.Columns.Add(New DataColumn("filename", _
System.Type.GetType("System.String")))
Dt.Columns.Add(New DataColumn("image", _
System.Type.GetType("System.Byte[]")))
Dt.Columns.Add(New DataColumn("filetag", _
System.Type.GetType("System.String")))
DsImg.Tables.Add(Dt)
步骤 3:现在将数据添加到 DataTable
并使用扩展名为 *.sp2p 的 XML 文件写入,使用自定义 PK 加密加密密码。 如果您愿意,可以加密二进制内容。 我把它留给用户了。
Dim Dr As DataRow
Dr = DsImg.Tables("images").NewRow
Dr("sysid") = Now.ToString
Dr("filename") = TxtFileName.Text
Dr("image") = bn.ReadBytes(Int(bn.BaseStream.Length))
Dr("filetag") = StrEncrypt(TxtPassword.Text)
DsImg.Tables("images").Rows.Add(Dr)
'>>> write xml file from dataset with binary content
DsImg.WriteXml(TxtFileName.Text & ".sp2p")
步骤 4:对于解密,我们将 XML 文件加载到 dataset
中,然后解密密码以检查提供的密码。 如果匹配,则从 dataset
读取内容到字节数组中,并写入文件流中,从最终解密文件中删除 .sp2p。
Dim Content As Byte()
Content = DsImg.Tables(0).Rows(0).Item(2)
Dim Fs As New System.IO.FileStream(FileName, System.IO.FileMode.Create)
Fs.Write(Content, 0, Content.Length)
Fs.Close()
关注点
在这里,我将一块字节直接写入文件系统。 如果您愿意,可以加密或转置字节序列以获得更好的安全性。 您可以在我的网站 programmer2programmer 上找到关于 加密算法的更详细的解释。
历史
- 2008年4月5日:初始帖子