Laden...
D
dschenk224 myCSharp.de - Member
Selbstständig Potsdam Dabei seit 19.10.2006 14 Beiträge
Benutzerbeschreibung

Forenbeiträge von dschenk224 Ingesamt 14 Beiträge

11.10.2011 - 17:54 Uhr

Hallo rollerfreak2,
vielen Dank. Zumindest die Exception wird nicht mehr ausgelöst - hab aber irgendwie noch ein komisches Ergebnis.
Ergebnis vor der Encryption und nach der Decryption ist irgendwie nicht identisch.

11.10.2011 - 17:07 Uhr

Hallo Christian,
vielen Dank für deine Nachricht.
Leider hat dies nicht den erwünschten Erfolg gebracht - die Exception wird immer noch mit der selbene Fehlermeldung ausgelöst.
Viele Grüsse
Daniel

11.10.2011 - 16:38 Uhr

Hallo herbivore,
ausgelöst wird eine CryptographicException, die ich ja auch im Code angegeben habe.
Die Meldung lautet:
Padding is invalid and cannot be removed.

Das Problem ist, dass wenn ich die Encryption/Decryption ohne Zwischenspeichern in eine Textdatei ausführe, funktioniert es wunderbar, ausser, dass dem string noch bis zur Auffüllung von 16 Bit eine entsprechende Anzahl

\0

angefügt werden.

11.10.2011 - 16:04 Uhr

Hallo herbivore,

Beim debugging springt er bei


 CsDecrypt.Read(BySource, 0, BySource.Length);

in die Exception.

11.10.2011 - 15:01 Uhr

Irgendwie komme ich nicht weiter.
Zielstellung: Benutzereingabe in Form - Passwort soll gespeichert werden.
Passwort wird verschlüsselt und dann in eine Textdatei geschrieben und bei Bedarf wieder entschlüsselt.
Ich weiss, ich habe einen Fehler in der Denkweise, aber ich komme irgendiwe nicht drauf!


class CCrypt
    {
        public byte[] Crypt(string StrInput, out byte[] ByKey, out byte[] ByIV)
        {
            try
            {
                RijndaelManaged RMRijndal = new RijndaelManaged();
                ASCIIEncoding AEConvert = new ASCIIEncoding();
                byte[] ByEncrypted;
                byte[] ByToEncrypt;
                RMRijndal.GenerateKey();
                RMRijndal.GenerateIV();
                ByKey = RMRijndal.Key;
                ByIV = RMRijndal.IV;
                ICryptoTransform ICTEncryptor = RMRijndal.CreateEncryptor(ByKey, ByIV);
                MemoryStream MsEncrypt = new MemoryStream();
                CryptoStream CsEncrpyt = new CryptoStream(MsEncrypt, ICTEncryptor, CryptoStreamMode.Write);
                ByToEncrypt = AEConvert.GetBytes(StrInput);
                CsEncrpyt.Write(ByToEncrypt, 0, ByToEncrypt.Length);
                CsEncrpyt.FlushFinalBlock();
                ByEncrypted = MsEncrypt.ToArray();
                return ByEncrypted;
            }
            catch (CryptographicException e)
            {
                MessageBox.Show("A Cryptographic error occurred: {0}", e.Message);
                ByKey = null;
                ByIV = null;
                return null;
            }
            
        }


class CDecrypt
    {
        public string Decrypt(byte[] ByInput, byte[] ByKey, byte[] ByIV)
        {
            try
            {
                RijndaelManaged RMRijndal = new RijndaelManaged();
                ASCIIEncoding AEConvert = new ASCIIEncoding();
                byte[] BySource;
                ICryptoTransform ICDecryptor = RMRijndal.CreateDecryptor(ByKey, ByIV);
                MemoryStream MsDecrypt = new MemoryStream(ByInput);
                CryptoStream CsDecrypt = new CryptoStream(MsDecrypt, ICDecryptor, CryptoStreamMode.Read);
                BySource = new byte[ByInput.Length];
                CsDecrypt.Read(BySource, 0, BySource.Length);
                string StrOutput = AEConvert.GetString(BySource);
                return StrOutput;
            }
            catch (CryptographicException e)
            {
                MessageBox.Show("A Cryptographic error occurred: {0}", e.Message);
                return null;
            }
        }

Speichern per Button mit:


private void BtSave_Click(object sender, EventArgs e)
        {
            byte[] ByKey, ByIV;
            CCrypt crypt = new CCrypt();
            ASCIIEncoding AEEncoding = new ASCIIEncoding();
            CSqlSettings settings = new CSqlSettings();
            String[] AStrSettings = new string[6];
            AStrSettings[0] = TbServername.Text;
            AStrSettings[1] = TbUsername.Text;
            AStrSettings[2] = AEEncoding.GetString(crypt.Crypt(TbPassword.Text, out ByKey, out ByIV));
            AStrSettings[3] = CbDatabase.SelectedItem.ToString();
            AStrSettings[4] = AEEncoding.GetString(ByKey);
            AStrSettings[5] = AEEncoding.GetString(ByIV);
            settings.WriteSetting(AStrSettings);
            BtCancel.Text = "Close";
            BtSave.Enabled = false;
        }

Vielen Dank für die Mühe
Daniel

25.01.2010 - 10:55 Uhr

Danke, das war es leider nicht.
Nicht der OpenFileDialog hat Mist gebaut, sondern der von db4o. Aber es war ein guter Tipp, da ich nun erst drauf gekommen bin, den Pfad absolut einzutragen.
Was ich mich frage, warum hat er unter XP das Verzeichnis nicht wieder auf default zurückgesetzt - unter Vista aber tut er es.
Hm, Fragen über Fragen

24.01.2010 - 22:50 Uhr

Hi, ich habe ein Problem!
Ich habe eine Form, die öffnet mit einem MenuToolStripItem ein neues Fenster, in diesem Dialog werden dann bestimmtE Elemente (ComboBox, CheckedListBox, DataGridView gefüllt usw.) abgefragt und angezeigt.
Unter XP, wo ich in einer virtuellen Maschine entwickle, passiert nun folgendes:
Ich öffne den Dialog und kann ihn einmal komplett ausfüllen. Dabei wird als erstes eine ComboBox angezeigt, welche zur Laufzeit mit Daten gefüllt wird (aus einer db4o-Datenbank). Dabei soll im Idealfall eine PictureBox per OpenFileDialog gefüllt werden.
Nach Abschluss des Dialogs, also wenn ich ihn mit OK oder Cancel schließe und noch einmal übers Menü aufrufe, wird die Combox nicht mehr gefüllt. Dies passiert jedoch nur, wenn ich den Button für den OpenFileDialog anklicke. Mache ich es nicht, und schließe den Dialog, füllt er die Combox beim erneuten Öffnen des Dialogs wie gewollt aus.
Unter Vista, meinem Hostsystem, tritt dieses Problem nicht so auf.
Ist jemandem dieses Problem auch bekannt und wie kann ich damit umgehen??
Auf beiden ist .Net 3.5 und .Net 2.0 installiert, ich benutze VS2005
Vielen Dank
Daniel

04.01.2010 - 02:05 Uhr

Danke für den Tipp und die Hilfe,
hab alles geschafft was ich wollte, heute gehe ich früher schlafen 😉
Gute Nacht

03.01.2010 - 13:17 Uhr

Ok, Thema gelöst,
hab anstatt

_Modellnummer=Modellnummer

die Variablen falsch benutzt


Modellnummer=_Modellnummer;

*schäm*

03.01.2010 - 04:04 Uhr

Hi,
es ist mir ja schon fast peinlich.
Ich hab mal eine Frage, warum werden meine Daten aus Modeltype(...) nicht in Mod gespeichert? Modeltype(...) bekommt die Daten, die will ich eigentlich als Parameter an das Objekt Mod übergeben. Ich sitze jetzt schon ne Weile dran, ich kriege einfach nicht den Knick aus meinem Gehirn.


using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
//using Db4objects.Db4o.Query;



namespace Ordersystem
{
    public class Modeltype
    {
        public string _Modellnummer, _Farbe, _Groesse, _Warengruppe, _Saison, _Bontext, _Qualitaet;
        public double _EK;


        public static void Main(string[] args)
        {
//            File.Delete("db.yap");
//            Db4objects.Db4o.IObjectContainer db = Db4objects.Db4o.Db4oFactory.OpenFile("db.yap");
            Datenbankaufbau(/*db*/);
        }
        public static void Datenbankaufbau(/*IObjectContainer db*/)
        {

            try
            {
                using (StreamReader sr = new StreamReader("order.csv", System.Text.Encoding.Default))
                {
                    String line;
                    while ((line = sr.ReadLine()) != null)
                    {
                        string[] Modelle = line.Split(new char[] { ';' });
  
                        Modeltype Mod = new Modeltype(Modelle[0],Modelle[1], Modelle[2], Modelle[3], Modelle[4],Modelle[5],ToDouble(Modelle[6]),Modelle[7]);
//                        db.Store(Mod);
                        Console.WriteLine("Gespeichert {0}", Mod);
                    }

                }
                Console.ReadLine();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
            finally
            {

               /* db.Close();*/
            }
        }
        public Modeltype(string Modellnummer, string Farbe, string Groesse, string Warengruppe, string Saison, string Bontext, double EK, string Qualitaet)
        {
            Modellnummer = _Modellnummer;
            Farbe = _Farbe;
            Groesse = _Groesse;
            Warengruppe = _Warengruppe;
            Saison = _Saison;
            Bontext = _Bontext;
            EK = _EK;
            Qualitaet = _Qualitaet;
        }
        public string modellnummer
        {
            get { return _Modellnummer; }
        }

        public string farbe
        {
            get { return _Farbe; }
        }
        public string groesse
        {
            get { return _Groesse; }
        }
        public string warengruppe
        {
            get { return _Warengruppe; }
        }
        public string saison
        {
            get { return _Saison; }
        }
        public string bontext
        {
            get { return _Bontext; }
        }
        public double ek
        {
            get { return _EK; }
        }
        public string qualitaet
        {
            get { return _Qualitaet; }
        }

        
        public static double ToDouble(string In)
        {
            In = In.Replace(",", ".");
            return double.Parse(In, System.Globalization.CultureInfo.InvariantCulture);
        }

/*        public static void ErgnisseAuflisten(IObjectSet result)
        {
            Console.WriteLine(result.Count);
            foreach (object item in result)
            {
                Console.WriteLine(item);
            }
        }*/
    }
}

PS: Hoffe ich hab jetzt nicht zuviel auskommentiert, is schon spät.
Vielen Dank für die Mühe schon mal im Voraus - ich glaub ich brauch Schlaf.
MfG Daniel

21.11.2006 - 11:53 Uhr

Den hab ich mir schon angeschaut.
Is aber nen bissel teuer, meinst nicht auch?
Dann ist ein App.-Server die bessere alternative, bin aber für weitere Vorschläge offen.
Daniel

20.11.2006 - 22:45 Uhr

Hi,

eine kleine Frage mit einem riesigen Antwortpotential möchte ich stellen.
Ziel: Entwicklung einer Dokumentenverwaltung mit Bereitstellung von Schnittstellen zur nachträglichen Installation von PlugIns

Wie würdet Ihr es realisieren?

Bei uns im Team diskutiert man die Realisierung über einen Application Server, dies beinhaltet mehr oder minder ein webbasiertes System. Da haben wir aber das Problem, dass die fast alle App-Server Java basiert sind. Wie implementiere ich dann die z.B. in C# geschrieben Software?

Würde mich freuen, wenn Ihr mich aus meiner Denkblockade befreien würdet!
Vielen Dank im Voraus

Daniel

Edit: Wir sind noch in der Diskussionsphase!!!!
Das Programm sollte auch unter Linux/Unix/MAC lauffähig sein (Mono)
Es muss auf mehreren Rechnern lauffähig sein, die Dokumentenverwaltung könnte aber z.B. auf dem leistungsfähigsten Clienten (oder der Erstinstallation) angeseidelt werden

19.10.2006 - 23:57 Uhr

Danke, das letzte war es

19.10.2006 - 23:34 Uhr

Hi, hab ein kleines Problem!
Also folgendermaßen:
Hab als Übung einen Texteditor erstellt. Leider funktioniert beim Speichern des Textes aus dem Textfeld (Window Forms) per Streamwriter nicht.
Folgender Code:


private void mnuSave(object sender, System.EventArgs e)
		{

			Stream myStream ;
			SaveFileDialog saveFileDialog1 = new SaveFileDialog();
 
			saveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"  ;
			saveFileDialog1.FilterIndex = 2 ;
			saveFileDialog1.RestoreDirectory = true ;
			saveFileDialog1.FileName = "unbenannt";
	
 
			if(saveFileDialog1.ShowDialog() == DialogResult.OK)
			{
				if((myStream = saveFileDialog1.OpenFile()) != null)
				{
					//Inhalt des Textfeldes
					string a = txtTexterfassung.Text;
					string path = saveFileDialog1.FileName;
					StreamWriter sw = new StreamWriter(path); 
					{
						
						sw.Write(a);
						sw.Close();
					}
					//File;
					
					myStream.Close();

				}
			}

Leider speichert er in path nicht den Pfad, sondern einen Zeiger auf den Pfad, und somit wird nix draus mit dem Speichern. Wenn ich in einen normalen Dateinamen eingebe,

StreamWriter sw = new StreamWriter("test.txt"); 

speichert er den Text im Stammverzeichnis des Projekt (VS 2003).
Wo liegt mein Fehler?
Vielen Dank im Voraus!
Ich kann das nicht, denn ich bin IFI Student 2. Klasse in Potsdam 🙁