Entwickler-Ecke

IO, XML und Registry - Textbox Inhalte verschlüsselt Speichern.


Punkt - Sa 17.09.11 16:45
Titel: Textbox Inhalte verschlüsselt Speichern.
Hallo ich versuche gerade Textbox Inhalte in einer Textbox zu speichern.


C#-Quelltext
1:
2:
3:
4:
5:
private void button1_Click_1(object sender, EventArgs e)
        {
            StreamWriter WStream = new StreamWriter("qwert.txt");
            WStream.Write(textBox1.Text, textBox2.Text);
            WStream.Close();


Leider speichert er nur den ersten Textbox Inhalt.
Ich habe auch schon




C#-Quelltext
1:
2:
3:
4:
5:
6:
private void button1_Click_1(object sender, EventArgs e)
        {
            StreamWriter WStream = new StreamWriter("qwert.txt");
            WStream.Write(textBox1.Text);
            WStream.Write(textBox2.Text);
            WStream.Close();

Versucht.Hier Speichert er beide Inhalte aber allerdings beides in einer Zeile.Ich möchte aber das für jede Textbox jeweils eine Zeile benutzt.
Außerdem brauche ich hilfe beim Verschlüsseln der textbox Inhalte (in der qwert.txt sollte dann z.B. soetwas stehen (q_#+ajklß)<-nur ein Beispiel)

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
Moderiert von user profile iconChristian S.: Topic aus C# - Die Sprache verschoben am Sa 17.09.2011 um 19:12


papa69 - Sa 17.09.11 17:42

um Text am Ende der Textdatei anzufügen, übergibst du dem SteamWriter 2 Argumente :


C#-Quelltext
1:
2:
3:
... 
StreamWriter sw = new StreamWriter(filename, true)
...


Moderiert von user profile iconChristian S.: Code- durch C#-Tags ersetzt


Punkt - Sa 17.09.11 18:27


C#-Quelltext
1:
2:
3:
4:
5:
6:
private void button1_Click_1(object sender, EventArgs e)
        {
            StreamWriter WStream = new StreamWriter("qwert.txt");
            StreamWriter sw = new StreamWriter(filename, true);
            WStream.Write(textBox1.Text, textBox2.Text);
            WStream.Close();


So sieht das nun aus.Er gibt mir einen Fehler namens:Fehler Der Name "filename" ist im aktuellen Kontext nicht vorhanden.

Hab da nicht soo viel erfahrung.

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


Trashkid2000 - Sa 17.09.11 20:51

Hallo Punkt,
um mit einem StreamWriter mehrere Zeilen zu schreiben probier es mal "WriteLine" :roll:
Das würde so aussehen:

C#-Quelltext
1:
2:
3:
4:
5:
using (StreamWriter wStream = new StreamWriter("qwert.txt", append))
{
  wStream.WriteLine(textBox1.Text);
  wStream.WriteLine(textBox2.Text);
}

edit: Was hat das denn eigentlich mit Verschlüsselung zu tun, wie es im Titel steht?
LG, Marko


Punkt - So 18.09.11 11:09

Danke es klappt ;)

Das Problem ist das ich den Inhalt der textbox1/textbox2 verschlüsselt speichern will.Damit meine ich wenn ich in texbox1 Hallo und in textbox2 Tschüs schreibe das man dies nicht genau so in der Textdatei sieht sondern verschlüsselt.Leider habe ich keine ahnung wie ich das Realisieren kann.


storestore - So 18.09.11 11:16

Sowas vlt?
http://social.msdn.microsoft.com/Forums/de-AT/dotnetframeworkde/thread/a7bfeefa-b39f-404b-b901-f60724c6ebf0


Punkt - So 18.09.11 11:27

Das kapiere ich nicht soo ganz..Achja noch eine Frage wie kann man es realisieren das das Textdokument keinen vorgegebenen Namen sonderen eine zufälligen Namen erhält.?


storestore - So 18.09.11 11:32

Hmm, wenn das gehen sollte würde ich es mit einem "Random" versuchen!
http://msdn.microsoft.com/de-de/library/system.random.aspx
Aber bei einem Random musst du halt verschiede namen oder wengistents Buchstaben vorgeben! Am besten mascht du einen String dessen "wert" das wird was sich aus dem Random ergibt. Für die Textbox machst gibst du einfach den String vor!

C#-Quelltext
1:
textBox1.text= //dann der string!                    

Ich hoffe das funzt (:oops:)
mfg storestore


Punkt - So 18.09.11 11:34

upps merke grade hab ich verschrieben das kommt von den ganzen Textboxen und Textdokumenten ;) meine natürlich das die .txt datei einen Random namen bekommt...


Horschdware - So 18.09.11 15:14

Überlege dir, wie der Name aufgebaut werden soll. Z.B. 8 Buchstaben.

Nimm einen String und hänge diesem solange einen zufälligen Buchstaben an, bis du acht Buchstaben zusammen hast.
Einen zufälligen Buchstaben bekommst du z.B. über deren ASCII Wert:
Ein kleines A hat den dezimalen Wert 97, ein kleines z 122.
Wie du Zufallszahlen erhältst hat storestore bereits geschrieben.
Am Ende dann ein ".txt" anhängen und du hast deinen zufälligen Dateinamen.


Wenn du den Inhalt der Textdatei verschlüsseln willst wird es haariger: Soll man einfach nur nicht
auf den ersten Blick lesen können, was da steht oder soll es so verschlüsselt werden, dass man ohne
zu wissen, wie du es verschlüsselt hast nicht rekonstruieren kann?


Punkt - So 18.09.11 15:18

erst mal danke.Könntest du das an meinem Code Beispiel erklären.Verstehe nämlich nicht so ganz was du mit ASCII usw. meinst.
Und wegen der Verschlüsselung man soll einfach nicht auf den ersten Blick sehen was dort steht.


Th69 - So 18.09.11 15:34

Hallo,

damit ist die ASCII-Tabelle gemeint: http://de.wikipedia.org/wiki/ASCII
Und bzgl. einfacher Verschlüsselung, such mal nach "XOR-Verschlüsselung".


Punkt - So 18.09.11 15:40

über google hab ich diesen Code gefunden leider verstehe ich den nicht so ganz und weiß nicht was ich damit anfangen soll.

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
private string XorEncrypt(string text, int key)
        {
            string newText = "";

            for (int i = 0; i < text.Length; i++)
            {
                int charValue = Convert.ToInt32(text[i]); //get the ASCII value of the character
                charValue ^= key; //xor the value

                newText += char.ConvertFromUtf32(charValue); //convert back to string
            }

            return newText;
        }


storestore - So 18.09.11 22:29

Sers,
Hmm war der Code so alleine? Bringt dich echt nix außer ein paar konvertierungn! Wie wäre es damit
http://m.youtube.com/?dc=organic&source=mog#/watch?v=oKZOMcxAFBU
aber direkt über den streamwritter Kannst du nicht Verschlüsseln dazu brauchst du noch etwas Hilfe durch ddls schätze ich!


ujr - So 18.09.11 23:09

user profile iconstorestore hat folgendes geschrieben Zum zitierten Posting springen:
Bringt dich echt nix außer ein paar konvertierungn!


charValue wird per exklusiv-oder mit key verknüpft - es findet also durchaus eine Transformation statt.

Beim Verschlüsseln ist zu beachten, dass das Ergebnis i. allg. kein "Text" mehr ist, sondern binär vorliegt. Hilfreich kann dabei auch der CryptoStream sein: http://msdn.microsoft.com/de-de/library/system.security.cryptography.cryptostream(v=vs.80).aspx

Wozu brauchst Du eigentlich einen zufälligen Dateinamen? Schließlich muss man den ja auch mal wieder öffnen können.


Punkt - Mo 19.09.11 14:36

das mit dem zufälligen Dateinamen ist jetzt eigentlich auch egal ;) Alles was ich brauche ist die Verschlüsslung die ich allerdings nicht so ganz verstehe..


Horschdware - Mo 19.09.11 14:49

@Punkt:
Du hast ja schon die komplette Methode zur Verschlüsselung hier gepostet.
Für dich in erster Linie ist daran interessant, wie du sie nutzen kannst. Die Methode erwartet einen String und einen integer und gibt einen String wieder zurück. Du musst diese Methode nur noch mit den zu verschlüsselten Daten füttern und diese danach in deine Datei schreiben.

Du willst etwas verschlüsseln? Füttere die Methode mit deinem unverschlüsselten Text und einem Schlüssel und erhalte den unlesbaren Text zurück.

C#-Quelltext
1:
str_unlesbar = XorEncrypt('Hallo Welt'17);                    


Bei XOR ist das Nette, dass eine Entschlüsselung nichts anderes ist, als die nochmalige "Verschlüsselung" mit dem gleichen Schlüssel

C#-Quelltext
1:
str_lesbar = XorEncrypt(str_unlesbar,17);                    


Wie GENAU diese Verschlüsselung funktioniert kann dir für den ersten Moment egal sein. Du willst das ja schliesslich nur anwenden. Vergleiche es mit einem Auto: Du weisst auch nicht im Detail, wie dort was funktioniert, wie die Einspritzung geregelt wird, etc. Du weisst aber, welches Pedal du treten musst, damit es vorwärts geht.
So ähnlich ist das hier.
Wenn es dich dann weiter interessiert, darfst du dich gerne auch damit befassen, wie das Ding im Detail funktioniert.


edit: storestore, der Code ist in Ordnung. Das ist natürlich keine sichere Verschlüsselung, die war ja aber auch nicht das Ziel. Und was soll dieser komische Youtube Link?


Punkt - Mo 19.09.11 14:55

Zitat:

Du willst etwas verschlüsseln? Füttere die Methode mit deinem unverschlüsselten Text und einem Schlüssel und erhalte den unlesbaren Text zurück.

C#-Quelltext
1:
str_unlesbar = XorEncrypt('Hallo Welt'17);                    


Bei XOR ist das Nette, dass eine Entschlüsselung nichts anderes ist, als die nochmalige "Verschlüsselung" mit dem gleichen Schlüssel

C#-Quelltext
1:
str_lesbar = XorEncrypt(str_unlesbar,17);                    


Ok das habe ich soweit verstanden nur für was die 17 steht kapiere ich nicht so ganz.


Horschdware - Mo 19.09.11 15:00

Eine beliebige Zahl.
Könnte genausogut 1 oder 254 sein. Das ist dein Schlüssel, mit dem dein Text "verwurstelt" wird.


Punkt - Mo 19.09.11 15:02

Achso das mit dem String verschlüsseln verstehe ich.Nur wie ich den Textbox inhalt verschlüssle nicht.


storestore - Mo 19.09.11 15:08

Erstelle einen String der den Textbox inhalt hat z.B.

C#-Quelltext
1:
string s= textBox1.text                    


Horschdware - Mo 19.09.11 15:12

Mal so am Rande: Hast du dir schon mal ein Tutorial / Buch gelesen oder eine Art Einsteigerkurs besucht?
Wenn nein, empfehle ich dir das dringend nachzuholen. Das erspart die viele graue Haare.


Punkt - Mo 19.09.11 15:14

@Horschdware Tutorialreihen hab ich mir auf youtube angesehen.Bücher weiß ich leider nicht welche und für einen Einsteigerkurs werde ich wohl noch zu jung sein.


thepaine91 - Mo 19.09.11 15:36

Ansehen ist eine Sache, es zu verstehen eine andere.
Zu jung für einen Einsteigerkurs? ^^


storestore - Mo 19.09.11 15:42

user profile iconPunkt hat folgendes geschrieben Zum zitierten Posting springen:
@Horschdware Tutorialreihen hab ich mir auf youtube angesehen.Bücher weiß ich leider nicht welche und für einen Einsteigerkurs werde ich wohl noch zu jung sein.

Nana! Es gibt mehr als genug! Z.B. Visual c# 2010 (lese ich derzeit!), Visual c# für dummis...(soll nichts heißen, aber wurde mir auch mal angeboten :twisted: ) gibt einfach mal in google ein.
http://tinyurl.com/6cz2po4
Nicht böse verstehen ;)
Naja, sonst einfach in die Bücherei und dort suchen! Habe ich auch gemacht, und upps ich habe das folgende buch gefunden:
http://www.amazon.de/Jetzt-lerne-Visual-2010-erfolgreichen/dp/3827245672/ref=sr_1_1?ie=UTF8&qid=1316439550&sr=8-1
Ein perfektes Buch für den Anfang!
Edit: http://www.terrashop.de/buecher/prog/dot_net/?r=google_adwords
mfg storestore


Horschdware - Mo 19.09.11 15:58

Storestore: Kennst du diesen Spruch bezüglich Glashäusern und Steinen?


storestore - Mo 19.09.11 16:01

user profile iconHorschdware hat folgendes geschrieben Zum zitierten Posting springen:
Storestore: Kennst du diesen Spruch bezüglich Glashäusern und Steinen?

Nee, leider nicht! Wie geht der? (Soll das jetzt was negatives gegen mich sein? :bawling: Ich wollte doch nur helfen!)


Horschdware - Mo 19.09.11 16:39

Nach deinem Edit macht mein letzter Beitrag keinen Sinn mehr -.-"
Aber... back to topic


storestore - Mo 19.09.11 18:15

Zitat:
back to topic

:zustimm:
user profile iconPunkt und hast du es geschaft? :?:
mfg storestore


Punkt - Di 20.09.11 14:15

Danke für die links ;) @thepaine91 mit 13 wird man wohl zu jung sein

Danke für eure Hilfe..


storestore - Di 20.09.11 16:24

*offtopic* bin auch 13!