Um jetzt beispielsweise einen String mit 30 bis 60 Zeichen zu verschl�sseln,
welche Methoden nimmt man da am besten? Gibt es Anwendungsbeispiele?
Anforderung ist nicht der "harte" Schutz vor brutalem Dechiffrieren mit
umpfzigtausend CPU-Cores im Hintergrund, sondern um einen Setupstring vor
"au ja, da schau ich mal schnell rein, mal gucken wie der das macht" zu
sch�tzen. Der Laufzeitbedarf f�r Instanziieren der Komponenten,
Verschl�sselung und Entschl�sseln sollte angemessen niedrig liegen.
Ein einfaches XOR des Strings mit einem Schl�sselstring w�re mir zu niedrig
angesetzt, aber der CPU-Bedarf darf auch nicht zu stark steigen.
Danke im Voraus.
mfg Chris
> Anforderung ist nicht der "harte" Schutz vor brutalem Dechiffrieren mit
> umpfzigtausend CPU-Cores im Hintergrund, sondern um einen Setupstring
> vor "au ja, da schau ich mal schnell rein, mal gucken wie der das macht"
> zu sch�tzen.
Also willst Du Dich vor Zugriffen mit dem .NET Reflector "sch�tzen". Da
w�rde ich Dir nahelegen, einfach einen Obfuskator zu benutzen. Die
meisten k�nnen n�mlich String Verschl�sselung.
Wenn es wirklich nur um einen einzelnen String geht, ist das aber
vermutlich Overkill bzw. zu teuer. Da w�rde ich mir selber einen
einfachen String Scrambler schreiben (also ein bisschen XOR und so) weil
das Aufrufen Deiner Methode immer noch ein wenig aufw�ndiger ist, als
den Text mit den zugeh�rigen Schl�sseln in ein Konsolenprojekte zu
kopieren und kurz zu entschl�sseln. Aber einem ehrlich gemeinten
"Angriff" (und damit meine ich nicht Brute Force mit tausenden von
Computern, sondern einfach nur eine halbwegs intelligente Nutzung von
.NET Reflector/ILASM/ILDASM) h�lt auch das nat�rlich nicht l�nger stand.
Ohne angeben zu wollen: bisher habe ich alle solchen Lizenz/IP Ged�ns in
unter zwei Stunden aushebeln k�nnen. Das liegt nicht daran, dass ich so
ein begnadeterer Hacker bin (bin ich nicht), sondern weil der Tool
Suppport f�r Managed Code so wahnsinnig gut ist. Und ja, ich mache das
ausschlie�lich zur pers�nlichen Belustigung :-)
--
Immo Landwerth
> (also ein bisschen XOR und so)
ich poste mal einen Link zu einem Artikel, den ich dazu sehr
unterhaltsam fand:
http://aktuell.de.selfhtml.org/weblog/php-verschluesselung-100-euro-wette
Viele Gr��e
Frederic
.
> Um jetzt beispielsweise einen String mit 30 bis 60 Zeichen zu
> verschl�sseln, welche Methoden nimmt man da am besten? Gibt es
> Anwendungsbeispiele?
Das nutze ich f�r eine _simple_ peer2peer Verbindung von ~250 Zeichen.
Wie Du ein String zum Byte() machst sollte ja bekannt sein. Wenn nicht
frag nochmal.
Gru�,
Thomas
Imports System.Security.Cryptography
Public Function GetMD5Array(ByVal value As String) As Byte()
Dim md5 As New MD5CryptoServiceProvider
GetMD5Array = md5.ComputeHash(UTF8Encoding.UTF8.GetBytes(value))
md5.Clear()
End Function
Public Function Decrypt(ByVal toDecrypt() As Byte, ByVal passMD5()
As Byte) As Byte()
Dim rDel As New RijndaelManaged()
rDel.Key = passMD5
rDel.Mode = CipherMode.ECB
rDel.Padding = PaddingMode.Zeros
Using cTransform As ICryptoTransform = rDel.CreateDecryptor()
Dim resultArray As Byte() =
cTransform.TransformFinalBlock(toDecrypt, 0, toDecrypt.Length)
rDel.Clear()
Decrypt = resultArray
End Using
End Function
Public Function Encrypt(ByVal toEncrypt() As Byte, ByVal passMD5()
As Byte) As Byte()
Dim rDel As New RijndaelManaged()
rDel.Key = passMD5
rDel.Mode = CipherMode.ECB
rDel.Padding = PaddingMode.Zeros
Using cTransform As ICryptoTransform = rDel.CreateEncryptor()
Dim resultArray As Byte() =
cTransform.TransformFinalBlock(toEncrypt, 0, toEncrypt.Length)
rDel.Clear()
Encrypt = resultArray
End Using
End Function