Unverschlüsselte Text Datei vor Manipulation schützen

  • VB.NET

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von Eistee.

    Unverschlüsselte Text Datei vor Manipulation schützen

    Hi,

    ich brauch mal ein paar ideen! Wie schützt man eine Unverschlüsselte Text Datei vor Manipulation?

    - Verschlüsseln ist nicht erlaubt
    - Online überprüfung fällt auch flach da man dafür immer verbunden sein müsste.

    Gruß Eistee :)

    Edit: :whistling: Mir fällt da grade MD5 ein, mach mich grade dran es in Vb umzusetzen.

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

    Also sie soll nicht verschlüsselt werden, das die txt gelesen wird ist egal.
    Sie darf nur nicht verändert werden!

    Dachte mir jetzt den MD5 Wert der ganzen txt Datei im Programm speichern und überprüfen.

    Aber das mit den Ressourcen ist ja natürlich noch einfacher.. aber warum einfach wenn es kompliziert geht :D
    ...

    VB.NET-Quellcode

    1. Dim myTXT As String = My.Resources.MeinText
    2. Dim txtarr() As String = myTXT.Split(vbCrLf)

    Schon hast du den selben Effekt wie mit der Funktion IO.ReadAllLines (welche übrigens dasselbe Verfahren verwendet ;) )


    Gruss
    Pascal
    Ok irgentwie will das nicht klappen 8|

    VB.NET-Quellcode

    1. Sub Load_Map(ByVal Level As Integer)
    2. Dim TempString As String = My.Resources.Story
    3. Dim TempStringArray() As String = TempString.Split(vbCrLf)
    4. For Zeile = 0 To TempStringArray.Length - 1
    5. If TempStringArray(Zeile).StartsWith("Level " & Level) Then
    6. MsgBox("Gefunden")
    7. End If
    8. Next
    9. End Sub


    Die erste Zeile mit Level 1 wird erkannt
    2, 3, 4.. geht nicht dachte erst wird nicht gesplittet aber am ende ist das Array 21 Felder groß..
    Habe mir die Zeilen auch mal ausgebgen lassen ist alles korrekt.
    Daran liegt es nicht.
    Die txt Datei wird Sauber geteilt und in das array eingelesen (Habe ich mit Augaben der einzelnen Elemente z.B. TempStringArray(7) überprüft

    Trotzdem wird nur die erste Zeile erkannt (wenn ich 1 übergebe) wenn ich z.B. 3 übergebe wird es nicht gefunden.
    So sieht die txt Datei aus (nur eine Test Datei)

    Level 1

    (76,120)



    Level 2

    (1000,10)



    Level 3

    (12345,6789)



    Level 4

    (1,0)
    Evtl. falsche Typenkonvertierung in Zeile 6:
    If TempStringArray(Zeile).StartsWith("Level " & Level) Then
    zu

    VB.NET-Quellcode

    1. If TempStringArray(Zeile).StartsWith("Level " & Level.ToString()) Then


    oder hast du bei gewissen Zeilen noch allfällige Leerzeichen zu Beginn?


    Gruss
    Pascal
    Das ist richtig!

    ich versuche es beim Testen immer mit 1, 2, und 3.

    Funktion Sub
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Sub Load_Map(ByVal Level As Integer)
    2. Dim TempString As String = My.Resources.Story
    3. Dim TempStringArray() As String = TempString.Split(vbCrLf)
    4. For Zeile = 0 To TempStringArray.Length - 1
    5. If TempStringArray(Zeile).StartsWith("Level " & Level.ToString) Then
    6. MsgBox("Gefunden")
    7. End If
    8. Next
    9. End Sub 'Load Map


    Story.txt
    Spoiler anzeigen

    Quellcode

    1. Level 1
    2. .
    3. (76,120)
    4. .
    5. .
    6. .
    7. Level 2
    8. .
    9. (1000,10)
    10. .
    11. .
    12. .
    13. Level 3
    14. .
    15. (12345,6789)
    16. .
    17. .
    18. .
    19. Level 4
    20. .
    21. (1,0)



    Ich komm einfach nicht dahinter warum es nicht klappt verdammt!!
    Ich habe mir jedes Element des Array's ausgeben lassen und alles ist richtig gesplittet.
    Zudem habe ich alles 100 mal auf Leerzeichen überprüft die, die erkennung vereiteln könnten. Nix.

    Habe jetzt sogar schon die leeren Zeilen mit Punkte aufgefüllt (obwohl die Array Elemente richtig erstellt wurden, leere Strings).

    BOHA :(

    Edit: Fahr jetzt zum Baumarkt DICKEN HAMMER KAUFEN!
    Ich komm wieder nicht weiter..

    Wenn ich das erste Zeichen überprüfe bekomme ich eine MsgBox die Leer ist pur weiß.
    Also muss es ein Leerzeichen oder ein Zeilenumbruch sein..

    VB.NET-Quellcode

    1. If Mid(Buchstabe, 1, 1) = vbCrLf Then
    2. MsgBox("Langsam kb mehr 1")
    3. End If


    VB.NET-Quellcode

    1. If Mid(Buchstabe, 1, 1) = " " Then
    2. MsgBox("Langsam kb mehr 2")
    3. End If


    Bei beiden kommt nix bei raus..
    Die Msgbox wird nicht angezeigt..
    Danke jetzt weiß ich schonmal das es Definitiv ein line Feed ist.
    jetzt muss ich nur noch das Zeichen finden. Bin für heute aber schon zu Matsche dafür xD

    Edit: Ok es ging doch noch vbLf

    Boha endlich ist der mist vorbei. Mach das Thema jetzt dicht. Danke an alle.