Hash per POST senden mit Sonderzeichen

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von KlyX.

    Hash per POST senden mit Sonderzeichen

    Hallo zusammen,

    die Absicherung der REST-API die ich verwende funktioniert... beinahe...
    Letztes Problem ist zurzeit noch die Übertragung eines Hash-Werts per POST.
    Ich habe festgestellt, dass mein Hash-Wert (nehmen wir mal folgenden Wert an: Px6Sx2+VUjyVti/sxNbS6/eupkvmISiG/6J0u/YzG6o), wenn ich ihn mit POST verschicke, wohl nicht korrekt ankommt (=Gegenprüfung misslingt).
    Schicke ich hingegen als Wert Px6Sx2VUjyVtisxNbS6eupkvmISiG6J0uYzG6o (also ohne jegliche Sonderzeichen), dann klappt die Übertragung (und die Gegenprüfung)

    So wird der Hash verschickt (der Hash steht in der Variable hash):

    VB.NET-Quellcode

    1. Dim n As WebClient = New WebClientWithCookies()
    2. n.Headers.Add("Content-Type", "application/x-www-form-urlencoded")
    3. Dim bytArguments As Byte() = System.Text.Encoding.ASCII.GetBytes("username=" & api_user.Text & "&password=" & hash)
    4. Dim bytRetData As Byte() = n.UploadData("https://hierstehtdieurl", "POST", bytArguments)


    Was ist falsch? Was muss ich anders machen?
    Hab schon Encode.Unicode probiert oder UTF8. Aber was ich ja eigentlich bräuchte wären HTML-Entities.

    Oder aber den Hash ohne "/" generieren. Kann ich das ggf. verbieten beim erstellen? Ich nutze diese Funktion:

    VB.NET-Quellcode

    1. Public Function HashPassword(ByVal Password As String, ByVal Salt As String) As String
    2. Dim pwd As String = Password & Salt
    3. Dim hasher As New Security.Cryptography.SHA256Managed()
    4. Dim pwdb As Byte() = System.Text.Encoding.UTF8.GetBytes(pwd)
    5. Dim pwdh As Byte() = hasher.ComputeHash(pwdb)
    6. Return Convert.ToBase64String(pwdh)
    7. End Function


    Danke und Gruss,
    KlyX
    Chris' Weblog - Mein Blog rund um Vieles :D
    Ja, das habe ich schon gefunden.
    Nur an welcher Stelle in meinem Code muss dass denn hin? Hab das schon beim Hash eingefügt. Nur dann meckert er über das as Byte beim bytArguments.
    Und funktioniert dass dann korrekt mit einem Slash? Ist vielleicht nicht geschickt wenn ein "/" mitgeschickt wird oder? Oder ist das bei POST egal?
    Chris' Weblog - Mein Blog rund um Vieles :D
    Konnte das Problem lösen. Mit dem obigen Link hat es nicht geklappt.
    Ich habe URLEncode jetzt über

    VB.NET-Quellcode

    1. WebUtility.UrlEncode(string)
    aufgerufen.
    So klappt die Umwandlung und die Übertragung.
    Chris' Weblog - Mein Blog rund um Vieles :D