📄 asymmetricexample.vb
字号:
Imports System
Imports System.Security.Cryptography
Imports System.IO
Imports System.Xml
Public Class AsymmetricExample
Private KeyFileName As String = "c:\AsymmetricKey.xml"
Private FileName As String = "c:\AsymmetricExample.xml"
Private CryptoProvider As RSACryptoServiceProvider = New RSACryptoServiceProvider(2048)
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 New()
If Not File.Exists(KeyFileName) Then
Dim FileWriter As FileStream = New FileStream(KeyFileName, FileMode.Create)
Dim XmlWriter As XmlTextWriter = New XmlTextWriter(FileWriter, System.Text.Encoding.UTF8)
XmlWriter.WriteRaw(CryptoProvider.ToXmlString(True))
XmlWriter.Close()
FileWriter.Close()
Else
Dim FileReader As FileStream = New FileStream(KeyFileName, FileMode.Open)
Dim XmlReader As XmlTextReader = New XmlTextReader(FileReader)
Dim XmlDoc As XmlDocument = New XmlDocument()
XmlDoc.Load(XmlReader)
CryptoProvider.FromXmlString(XmlDoc.InnerXml)
End If
End Sub
Public Sub Encrypt()
Dim MemWriter As StringWriter = New StringWriter()
Dim XmlWriter As XmlTextWriter = New XmlTextWriter(MemWriter)
XmlWriter.WriteStartDocument()
XmlWriter.WriteStartElement("Configuration")
XmlWriter.WriteStartElement("Data")
XmlWriter.WriteElementString("Server", Server)
XmlWriter.WriteElementString("Database", Database)
XmlWriter.WriteElementString("User", User)
XmlWriter.WriteElementString("Password", Password)
XmlWriter.WriteElementString("Provider", Provider)
XmlWriter.WriteEndElement()
XmlWriter.WriteEndElement()
XmlWriter.WriteEndDocument()
Dim CryptoWriter As FileStream = New FileStream(FileName, FileMode.Create)
Dim Contents As String = MemWriter.ToString()
Dim Xml(Contents.Length - 1) As Byte
Dim n As Integer = 0
For n = 0 To Contents.Length - 1
Xml(n) = Convert.ToByte(Contents.Chars(n))
Next
Dim Text(Xml.Length - 1) As Byte
Text = CryptoProvider.Encrypt(Xml, False)
CryptoWriter.Write(Text, 0, Text.Length)
CryptoWriter.Close()
XmlWriter.Close()
MemWriter.Close()
End Sub
Public Sub Decrypt()
If Not File.Exists(FileName) Then
Me.Encrypt()
End If
Dim FileReader As FileStream = New FileStream(FileName, FileMode.Open)
Dim Contents(FileReader.Length - 1) As Byte
FileReader.Read(Contents, 0, Convert.ToInt32(FileReader.Length))
Dim Xml(Contents.Length - 1) As Byte
Xml = CryptoProvider.Decrypt(Contents, False)
Dim Text(Xml.Length - 1) As Char
Xml.CopyTo(Text, 0)
Dim StringText As String = New String(Text)
Dim memreader As StringReader = New StringReader(StringText)
Dim XmlReader As XmlTextReader = New XmlTextReader(memreader)
Dim XmlDoc As XmlDocument = New XmlDocument()
XmlDoc.Load(XmlReader)
Dim XPath As String = "/Configuration/Data/"
Server = XmlDoc.SelectSingleNode(XPath & "Server").InnerText
Database = XmlDoc.SelectSingleNode(XPath & "Database").InnerText
User = XmlDoc.SelectSingleNode(XPath & "User").InnerText
Password = XmlDoc.SelectSingleNode(XPath & "Password").InnerText
Provider = XmlDoc.SelectSingleNode(XPath & "Provider").InnerText
FileReader.Close()
memreader.Close()
XmlReader.Close()
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -