|
VB.NET • Encrypt and Decrypt With a Symmetric Algorithm Listing 1. This class uses the RijndaelManaged class to encrypt and decrypt information stored in an XML document called SymmetricExample.xml, which resides in the C: drive's root directory. Notice how the streams are chained together and used to feed information from one stream into another to encrypt and decrypt the file. Imports System
Imports System.Xml
Imports System.IO
Imports System.Security.Cryptography
Imports System.Windows
Imports System.Windows.Forms
Public Class SymmetricExample
Private key As Byte() = {11, 2, 7, 24, 16, _
22, 4, 38, 27, 3, 11, 10, 17, 15, 6, 23}
Private iv As Byte() = {1, 2, 3, 4, 5, 6, _
17, 8, 9, 10, 11, 12, 13, 14, 15, 16}
Private cryptoprovider As RijndaelManaged = _
New RijndaelManaged()
Private filename As String = _
"c:\SymmetricExample.xml"
Public Server As String = "(local)"
Public Database As String = "Northwind"
Public User As String = "sa"
Public Password As String = ""
Public Provider As String = "SQLOLEDB"
Public Sub Decrypt()
If Not File.Exists(filename) Then
Me.Encrypt()
End If
Dim FileReader As FileStream = New _
FileStream(filename, FileMode.Open)
Dim CryptoReader As CryptoStream = New _
CryptoStream(FileReader, _
cryptoprovider.CreateDecryptor(key, _
iv), CryptoStreamMode.Read)
Dim XmlReader As XmlTextReader = New _
XmlTextReader(CryptoReader)
Dim XmlDoc As XmlDocument = New _
XmlDocument()
Dim XPath As String = _
"/Configuration/Data/"
XmlDoc.Load(XmlReader)
XmlReader.Close()
CryptoReader.Close()
FileReader.Close()
Me.Server = XmlDoc.SelectSingleNode( _
XPath & "Server").InnerText
Me.Database = XmlDoc.SelectSingleNode( _
XPath & "Database").InnerText
Me.User = XmlDoc.SelectSingleNode( _
XPath & "User").InnerText
Me.Password = XmlDoc.SelectSingleNode( _
XPath & "Password").InnerText
Me.Provider = XmlDoc.SelectSingleNode( _
XPath & "Provider").InnerText
End Sub
Public Sub Encrypt()
Dim FileWriter As FileStream = New _
FileStream(filename, FileMode.Create)
Dim CryptoWriter As CryptoStream = New _
CryptoStream(FileWriter, _
cryptoprovider.CreateEncryptor(key, _
iv), CryptoStreamMode.Write)
Dim XmlWriter As XmlTextWriter = New _
XmlTextWriter(CryptoWriter, _
System.Text.Encoding.UTF8)
XmlWriter.WriteStartDocument()
XmlWriter.WriteStartElement _
("Configuration")
XmlWriter.WriteStartElement("Data")
XmlWriter.WriteElementString("Server", _
Me.Server)
XmlWriter.WriteElementString("Database", _
Me.Database)
XmlWriter.WriteElementString("User", _
Me.User)
XmlWriter.WriteElementString("Password", _
Me.Password)
XmlWriter.WriteElementString("Provider", _
Me.Provider)
XmlWriter.WriteEndElement()
XmlWriter.WriteEndElement()
XmlWriter.WriteEndDocument()
XmlWriter.Close()
CryptoWriter.Close()
FileWriter.Close()
End Sub
End Class
|