Verschlüsseln/Password abfrage

  • VB.NET

Es gibt 31 Antworten in diesem Thema. Der letzte Beitrag () ist von EiPott.

    VB.NET-Quellcode

    1. Imports System.Security.Cryptography
    2. Imports System.Text
    3. Public Class SimpleAESWrapper
    4. Public Function Encrypt(ByVal TextToEncrypt As String, ByVal Passphrase As String, ByRef Base64IV As String) As String
    5. Dim aes As New AesManaged
    6. ' since AESManaged defaults to a keysize of 256 bit,
    7. ' we use sha256 to create a valid key from the
    8. ' passphrase
    9. aes.Key = (New SHA256Managed).ComputeHash(Encoding.Unicode.GetBytes(Passphrase))
    10. If String.IsNullOrEmpty(Base64IV) Then
    11. ' IV is generated by AES and stored for later use in decrpytion
    12. aes.GenerateIV()
    13. Base64IV = Convert.ToBase64String(aes.IV)
    14. Else
    15. ' if we want to use a previously generated IV
    16. aes.IV = Convert.FromBase64String(Base64IV)
    17. End If
    18. Dim Plaintext() As Byte = System.Text.Encoding.Unicode.GetBytes(TextToEncrypt)
    19. Dim EncryptedText As String = ""
    20. Using ms As New System.IO.MemoryStream()
    21. Dim enc As System.Security.Cryptography.ICryptoTransform = aes.CreateEncryptor
    22. Dim cs As New System.Security.Cryptography.CryptoStream(ms, enc, Security.Cryptography.CryptoStreamMode.Write)
    23. cs.Write(Plaintext, 0, Plaintext.Length)
    24. cs.FlushFinalBlock()
    25. Dim b(ms.Length - 1) As Byte
    26. EncryptedText = Convert.ToBase64String(ms.ToArray)
    27. ms.Close()
    28. cs.Close()
    29. End Using
    30. aes.Clear()
    31. Return EncryptedText
    32. End Function
    33. Public Function Decrypt(ByVal TextToDecrypt As String, ByVal Passphrase As String, ByVal Base64IV As String) As String
    34. Dim aes As New AesManaged
    35. aes.Key = (New SHA256Managed).ComputeHash(Encoding.Unicode.GetBytes(Passphrase))
    36. aes.IV = Convert.FromBase64String(Base64IV)
    37. Dim EncryptedText() As Byte = Convert.FromBase64String(TextToDecrypt)
    38. Dim Plaintext As String = ""
    39. Using ms As New System.IO.MemoryStream(EncryptedText)
    40. Dim dec As System.Security.Cryptography.ICryptoTransform = aes.CreateDecryptor
    41. Dim cs As New System.Security.Cryptography.CryptoStream(ms, dec, Security.Cryptography.CryptoStreamMode.Read)
    42. Dim sr As New System.IO.StreamReader(cs, System.Text.Encoding.Unicode)
    43. Plaintext = sr.ReadToEnd
    44. cs.Close()
    45. End Using
    46. aes.Clear()
    47. Return Plaintext
    48. End Function
    49. Public Sub test()
    50. Dim iv As String = ""
    51. Dim secret1 As String = Encrypt("ABCD", "secret", iv)
    52. Dim secret2 As String = Encrypt("EFGH", "secret", iv)
    53. Dim plain As String = Decrypt(secret1, "secret", iv) & Decrypt(secret2, "secret", iv)
    54. If plain <> "ABCDEFGH" Then MsgBox("oops")
    55. End Sub
    56. End Class
    Hi, bei mir funktioniert das Entschlüsseln nicht. Ich mache das so:

    VB.NET-Quellcode

    1. If VistaTB1.Text = Decrypt(My.Settings.Passwort, "test", "") Then
    2. Application.Exit()
    3. Else
    4. Versuche += 1
    5. Label1.Text = "Bisher " & Versuche & " falsche Eingaben"
    6. End If


    Aber es kommt immer die Fehlermeldung:
    "Der angegenebe Initialisierungsvektor (IV) stimmt nicht mit der Blockgröße für diesen Algorithmus überein."

    Skybird schrieb:

    Das sind ja Ubisoftmethoden hier !

    Ich debugge nach jedem mal, wenn ich den Code ändere... das Programm wird nicht sichtbar und ich bekomme nur eine Meldung, dass vs-host nichtmehr geht, wenn ich den Code wieder aus Form_Load nehme, geht alles wieder.. soll ich mal mein ganzes Form_Load Ereignis schreiben? Vielleicht stimmt ja daran etwas nicht..
    LG
    Merio
    Jetzt habe ich einen Fehler:
    Spoiler anzeigen
    Der angegebene Initialisierungsvektor (IV) stimmt nicht mit der Blockgröße für diesen Algorithmus überein.

    Ich habs auf nen Button gemacht, dann bringt er den Fehler..
    LG
    Merio

    VB.NET-Quellcode

    1. Public Function Decrypt(ByVal TextToDecrypt As String, ByVal Passphrase As String, ByVal Base64IV As String) As String
    2. Dim aes As New AesManaged
    3. aes.Key = (New SHA256Managed).ComputeHash(Encoding.Unicode.GetBytes(Passphrase))
    4. aes.IV = Convert.FromBase64String(Base64IV)
    5. Dim EncryptedText() As Byte = Convert.FromBase64String(TextToDecrypt)
    6. Dim Plaintext As String = ""
    7. Using ms As New System.IO.MemoryStream(EncryptedText)
    8. Dim dec As System.Security.Cryptography.ICryptoTransform = aes.CreateDecryptor
    9. Dim cs As New System.Security.Cryptography.CryptoStream(ms, dec, Security.Cryptography.CryptoStreamMode.Read)
    10. Dim sr As New System.IO.StreamReader(cs, System.Text.Encoding.Unicode)
    11. Plaintext = sr.ReadToEnd
    12. cs.Close()
    13. End Using
    14. aes.Clear()
    15. Return Plaintext
    16. End Function




    Zeile 4
    LG
    Merio