任何能够破解您的程序的人,更有可能也有破解 MySQL 的知识...我知道,这不是答案,我花了好几个星期试图保护我的程序免受类似的攻击,但是,我当时想'为什么...?'
话虽如此,如果您确实需要对源代码保密并删除密码,那么从某处的文本文件中加载连接字符串怎么样?
简单加密见system.security.cryptography
我刚刚查找了我的旧代码,用于简单地加密字符串,你可以看看这个
Imports System.Security.Cryptography
Imports System.Net
Public NotInheritable Class Encryptorr
Public TDS As New TripleDESCryptoServiceProvider
Private Function EncHash(ByVal key As String, ByVal length As Integer) As Byte()
Dim enc_Sha1 As New SHA1CryptoServiceProvider
Dim keyBytes() As Byte =
System.Text.Encoding.Unicode.GetBytes(key)
Dim hash() As Byte = enc_Sha1.ComputeHash(keyBytes)
ReDim Preserve hash(length - 1)
Return hash
End Function
Sub New(ByVal key As String)
TDS.Key = EncHash(key, TDS.KeySize \ 8)
TDS.IV = EncHash("", TDS.BlockSize \ 8)
End Sub
Public Function EncryptData(ByVal plaintext As String) As String
Dim Strbytes() As Byte = System.Text.Encoding.Unicode.GetBytes(plaintext)
Dim memStr As New System.IO.MemoryStream
Dim encStream As New CryptoStream(memStr, TDS.CreateEncryptor(), System.Security.Cryptography.CryptoStreamMode.Write)
encStream.Write(Strbytes, 0, Strbytes.Length)
encStream.FlushFinalBlock()
Return Convert.ToBase64String(memStr.ToArray)
End Function
Public Function DecryptData(ByVal encryptedtext As String) As String
Try
Dim enc_Bytes() As Byte = Convert.FromBase64String(encryptedtext)
Dim mem_Str As New System.IO.MemoryStream
Dim decStream As New CryptoStream(mem_Str, TDS.CreateDecryptor(), System.Security.Cryptography.CryptoStreamMode.Write)
decStream.Write(enc_Bytes, 0, enc_Bytes.Length)
decStream.FlushFinalBlock()
Return System.Text.Encoding.Unicode.GetString(mem_Str.ToArray)
Catch ex As Exception
Return "Decryption Failed"
End Try
End Function
End Class
打电话给
Public Sub TestMe()
Dim encr As Encryptorr = New Encryptorr("AlovelyLong463728KeytoEncryptwith")
Dim encrytedstr As String = encr.EncryptData(textbox1.text)
Textbox2.text = encrytedstr
Dim decry As Encryptorr = New Encryptorr("AlovelyLong463728KeytoEncryptwith")
Dim decryptedtext As String = decry.DecryptData(Textbox2.text)
Textbox3.text = decryptedtext
End Sub
然后您可以加密和解密从文本文件中读取的字符串,尽管回到我原来的观点。如果有人可以访问程序代码,他们也可以进行解密... :(
仍然值得深思!祝你好运
更新——
只是要补充一点,您始终可以创建加密字符串,将其用作全局变量,并使用 decryt 函数直接作为连接字符串传递。这意味着不是将用户名和密码保存在文本文件中,而是使用Public Shared Constr as String = fhdasjifhn32437289cj(或任何加密字符串),连接将是Dim Con as MySQLConnection = new MySQLConnection(DecryptMyStr(Constr)),其中 DecryptMyStr 是解密函数