Любой, кто сможет взломать вашу программу, скорее всего, будет обладать знаниями и для взлома 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
Затем вы можете зашифровать и расшифровать строки, прочитанные из текстовых файлов, хотя вернемся к моей первоначальной точке зрения.Если кто-то может получить доступ к коду программы, он также может выполнить дешифрование ...: (
Все еще пища для размышлений! Удачи
Обновление - просто чтобы добавить вас, вывсегда можно создать зашифрованную строку, использовать ее в качестве глобальной переменной и функцию расшифровки для передачи непосредственно в качестве строки подключения. Это означает, что вместо сохранения имени пользователя и пароля в текстовом файле вы просто используете Public Shared Constr as String = fhdasjifhn32437289cj
(или любой другой зашифрованныйстрока is), и соединение будет Dim Con as MySQLConnection = new MySQLConnection(DecryptMyStr(Constr))
с DecryptMyStr, являющимся функцией дешифрования