[How To] Strings ver- und entschlüsseln (Simple Xor-Verschlüsselung)

    • VB.NET

    Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von filmee24.

      [How To] Strings ver- und entschlüsseln (Simple Xor-Verschlüsselung)

      Ich habe eine Klasse geschrieben, die ermöglicht, Strings zu verschlüsseln und entschlüsseln.

      VB.NET-Quellcode

      1. ''' <summary>
      2. ''' Eine Klasse zum Verschlüsseln von Strings
      3. ''' </summary>
      4. ''' <remarks></remarks>
      5. Public Class Crypter
      6. ''' <summary>
      7. ''' Verschlüsselt einen Text mittels Xor
      8. ''' </summary>
      9. ''' <param name="str">Zu verschlüsselnder String</param>
      10. ''' <returns>Verschlüsselte Zeichenfolge</returns>
      11. ''' <remarks></remarks>
      12. Public Function Crypt(ByVal str As String) As String
      13. Dim crypted As String = String.Empty
      14. Dim cArr As Char() = str.ToCharArray()
      15. Dim key As Integer = New Random().Next(0, 256)
      16. For Each c As Char In cArr
      17. Dim code As Integer = Asc(c)
      18. crypted &= Chr(code Xor key).ToString() & "\"
      19. Next
      20. crypted = crypted & key.ToString()
      21. Return crypted
      22. End Function
      23. ''' <summary>
      24. ''' Entschlüsselt eine verschlüsselte Zeichenfolge
      25. ''' </summary>
      26. ''' <param name="str">Verschlüsselter String</param>
      27. ''' <returns>Entschlüsselter String</returns>
      28. ''' <remarks></remarks>
      29. Public Function Decrypt(ByVal str As String) As String
      30. Dim decrypted As String = String.Empty
      31. Dim key As Integer = Integer.Parse(str.Substring(str.LastIndexOf("\") + 1))
      32. str = str.Substring(0, str.LastIndexOf("\"))
      33. Dim strArr As String() = str.Split("\"c)
      34. For Each param As Char In strArr
      35. Dim int As Integer = Asc(param)
      36. Dim c As Char = Chr(int Xor key)
      37. decrypted &= c.ToString()
      38. Next
      39. Return decrypted
      40. End Function
      41. End Class


      Wie man dies aufruft, brauche ich wohl nicht zu erklären.

      Beispiel:
      Verschlüsselt: ž\»\©\ú\³\©\®\ú\¿\³\´\ú\˜\¿\³\©\ª\³\¿\¶\ô\218
      Entschlüsselt: Das ist ein Beispiel.

      MfG

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „LaPi“ ()

      Ich habe die Klasse etwas überarbeitet.

      Man muss nun einen Key (Byte [0-255]) angeben, aber es werden trotzdem unterschiedliche Verschlüsselungen angezeigt.
      Außerdem wird hier auch die Caesar-Verschlüsselung benutzt.

      VB.NET-Quellcode

      1. ''' <summary>
      2. ''' Eine Klasse zum Verschlüsseln von Strings
      3. ''' </summary>
      4. ''' <remarks></remarks>
      5. Public Class Crypter
      6. ''' <summary>
      7. ''' Verschlüsselt einen Text mittels Caesar und Xor
      8. ''' </summary>
      9. ''' <param name="str">Zu verschlüsselnder String</param>
      10. ''' <param name="bkey">Beliebiger Key (0-255) zum Verschlüsseln</param>
      11. ''' <returns>Verschlüsselte Zeichenfolge</returns>
      12. ''' <remarks></remarks>
      13. Public Function Crypt(ByVal str As String, ByVal bkey As Byte) As String
      14. Dim crypted As String = String.Empty
      15. str = CaesarCrypt(str.ToCharArray())
      16. Dim cArr As Char() = str.ToCharArray()
      17. Dim key As Integer = New Random().Next(0, 256)
      18. For Each c As Char In cArr
      19. Dim code As Integer = Asc(c)
      20. crypted &= Chr(code Xor key Xor bkey).ToString()
      21. Next
      22. crypted = crypted & "\" & Chr(key Xor bkey).ToString()
      23. Return crypted
      24. End Function
      25. ''' <summary>
      26. ''' Verschlüsselt einen Text mit der Caesar-Methode
      27. ''' </summary>
      28. ''' <param name="cArr">Zeichenfolge in einem CharArray</param>
      29. ''' <returns>Verschlüsselte Zeichenfolge</returns>
      30. ''' <remarks></remarks>
      31. Private Function CaesarCrypt(ByVal cArr As Char()) As String
      32. Dim buffer As String = String.Empty
      33. For Each c As Char In cArr
      34. Dim i As Integer = Asc(c) + 1
      35. If i = 256 Then i = 0
      36. buffer &= Chr(i)
      37. Next
      38. Return buffer
      39. End Function
      40. ''' <summary>
      41. ''' Entschlüsselt einen Text
      42. ''' </summary>
      43. ''' <param name="cArr">Verschlüsselte Zeichenfolge in einem CharArray</param>
      44. ''' <returns>Entschlüsselter Text</returns>
      45. ''' <remarks></remarks>
      46. Private Function CaesarDecrypt(ByVal cArr As Char()) As String
      47. Dim buffer As String = String.Empty
      48. For Each c As Char In cArr
      49. Dim i As Integer = Asc(c) - 1
      50. If i = 0 Then i = 255
      51. buffer &= Chr(i)
      52. Next
      53. Return buffer
      54. End Function
      55. ''' <summary>
      56. ''' Entschlüsselt eine verschlüsselte Zeichenfolge
      57. ''' </summary>
      58. ''' <param name="str">Verschlüsselter String</param>
      59. ''' <returns>Entschlüsselter String</returns>
      60. ''' <remarks></remarks>
      61. Public Function Decrypt(ByVal str As String) As String
      62. Dim decrypted As String = String.Empty
      63. Dim important As String = str.Substring(str.LastIndexOf("\") + 1)
      64. Dim key As Integer = Integer.Parse(Asc(Char.Parse(important)).ToString())
      65. str = str.Substring(0, str.LastIndexOf("\"))
      66. Dim strArr As Char() = str.ToCharArray()
      67. For Each param As Char In strArr
      68. Dim int As Integer = Asc(param)
      69. Dim c As Char = Chr(int Xor key)
      70. decrypted &= c.ToString()
      71. Next
      72. decrypted = CaesarDecrypt(decrypted.ToCharArray())
      73. Return decrypted
      74. End Function
      75. End Class


      Beispiel:
      Verschlüsselt: þê†æïüˆ‡ˆùØÜÃÙƈýÜÚÃÍ܈ùÆ‹\©
      Entschlüsselt: VB.NET - Option Strict On!

      Bin mir nicht sicher, was du mit Chiffre und Passwort meinst.

      MfG
      aber das heißt nunmal so, da es ja auch über XOR berechnet wird und er kann einen Algorithmus nicht einfach nach Lust und Laune umbenennen...
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---
      Was soll das für eine Verschlüsselung sein? Also: ich verschlüssele meine Bank-Pin: "5644" -> "®¯­­\~" mit dem Key "3". Jetzt denke ich, dass die Daten sicher seien, es wird ja ein Schlüssel verwendet. Nun versuche ich den Geheimtext zu entschlüsseln. Und was ist das? Ich brauche den Key gar nicht, um die PIN zu entschlüsseln? Der Key ist im Geheimtext drin? Und die verschlüsselte PIN habe ich auf meine EC-Karte geschrieben, aber die ist jetzt weg?

      Es ist sinnlos eine Verschlüsselung zu machen, die keinen Schutz bietet. Bau das raus mit dem Key im Geheimtext! Oder nimm gleich ein Feistelnetzwerk wie ich: vb-paradise.de/sonstiges/showr…elungsprogramm-fuer-texte

      Leider ein Problem beim decrypten

      Das Problem entsteht beim Aufruf durch:

      VB.NET-Quellcode

      1. Dim strValue2 As String = Space(1024)
      2. Dim sAppPath As String = Application.StartupPath
      3. GetPrivateProfileString("User Data", "Pass", "", strValue2, 1024, sAppPath & Dateiname)
      4. MessageBox.Show(strValue2)'gibt den String aus der Ini zurück. (Testweise)
      5. Dim crypten As New Crypter
      6. Form1.Password.Text = crypten.Decrypt(strValue2)


      Fehler in:


      VB.NET-Quellcode

      1. Dim key As Integer = Integer.Parse(Asc(Char.Parse(important)).ToString())

      Die Meldung:
      Die Zeichenfolge darf nur genau ein Zeichen lang sein.


      habt ihr eine Idee was da falsch sein könnte?

      Grüße
      Cyberkey