65.9K
CodeProject 正在变化。 阅读更多。
Home

P2P 安全文件,使用密码加密和解密任何文件

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.53/5 (11投票s)

2008年4月5日

CPOL

1分钟阅读

viewsIcon

76215

downloadIcon

1751

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

secure_file

secure_file

引言

本文讨论了如何通过使用密码加密来保护任何文件。 下载用 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日:初始帖子
© . All rights reserved.