⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asymmetricexample.vb

📁 在C#中实现加密解密
💻 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 + -