Laden...

Forenbeiträge von schlumpf2009 Ingesamt 11 Beiträge

08.02.2013 - 23:00 Uhr

ich habe kein passendes rsa thema gefunden 😃

Fehlermeldung:
Eine nicht behandelte Ausnahme des Typs "System.ArgumentException" ist in WindowsFormsApplication1.exe aufgetreten.
Zusätzliche Informationen: Offset und Länge für das Array liegen außerhalb des gültigen Bereichs, oder die Anzahl ist größer als die Anzahl der Elemente vom Index bis zum Ende der Quellauflistung.

da die blocksize ja 117 ist und die länge ein vielfaches der 117

darum knallt es bei 1172, 1173, 117*4 usw

08.02.2013 - 13:55 Uhr

hast du es schon mal mit einem anderen tool versucht und auch nachgesehen ob definitiv daten
in den feldern vorhanden sind

http://msdn.microsoft.com/de-de/library/ms186939.aspx

sollte nichd das problem sein 🤔

08.02.2013 - 13:14 Uhr

ignoriere mal deine eingabe und dein auslesen der daten aus den textboxen und fang "klein" an

bekommst du daten aus der datenbank in eine richtextbox oder textbox ausgelesen ( und sind diese korrekt ) ?

08.02.2013 - 08:21 Uhr

n problem dabei ist :

wenn der text
111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 ( 117 zeichen ) eingegeben wird :

bekommt man bei

117 zeichen : kein fehler
234 zeichen : ja
351 zeichen : ja

in dieser zeile

 Buffer.BlockCopy(bufcipher, 0, cipher, offsetcipher, 128);

eine exception.

ich vermute das liegt am rest von der blockgröße aber beschäftige mich dafür noch zu wenig
mit rsa X(

edit :

ich habe es nun per modulo gelöst






if (textBoxSourceText.Text.Length % 117 == 0)
            {
               
                textBoxSourceText.Text = textBoxSourceText.Text + "+ben+";
            }
            else
            {

            }






dadurch wird vor der verschlüsselung geprüft ob der text 117 oder ein vielfaches davon ist ( rest 0 ) und dann werden einfach 5 zeichen angefügt. beim entschlüsseln einfach die 5 zeichen suchen und löschen 🙂

das kann man z.b. mit instr oder einfach remove (textBoxSourceText.Text.Length-5,5) machen

edit 2:

das modulo wirft einen fehler wenn man einen text der länge 0 hat dadurch nochmal ne anpassung der anpassung 🙂



            if (textBoxSourceText.Text.Length == 0)
            {
                
            }
            else
            {
                
                if (textBoxSourceText.Text.Length % 117 == 0)
                {
                    //Do something
                    textBoxSourceText.Text = textBoxSourceText.Text + "+ben+";
                    textBox1.Text = BytesToHex(EncryptData(StringToByteArray2(textBoxSourceText.Text), textBoxPublicKey.Text));
                }
                else
                {
                    textBox1.Text = BytesToHex(EncryptData(StringToByteArray2(textBoxSourceText.Text), textBoxPublicKey.Text));
                }
            }

sollte nun stimmen hoffentlich kann es sich jemand mal ansehen 😉

06.02.2013 - 11:05 Uhr

thx sry übersehen X(

06.02.2013 - 10:48 Uhr

wie der titel schon sagt : existiert ein "alle foren als gelesen markieren" ?

wenn ich auf http://www.mycsharp.de/wbb2/search.php?action=new
gehe finde ich nichts dergleichen X(

06.02.2013 - 10:43 Uhr

ganz ehrlich baut euch dóch was eigenes mit rsa z.b. dann habt ihr das problem nicht und lernt noch was dabei

05.02.2013 - 14:31 Uhr

auch wenn das thema älter ist wollte ich was dazu schreiben als ich mit der forensuche das thema gefunden habe.

der öffentliche schlüssel : nur zum verschlüsseln
der private schlüssel : nur zum entschlüsseln

ignorieren wir mal komplett das signieren !

RSA (Rivest, Shamir und Adleman) ist ein asymmetrisches kryptographisches Verfahren, das sowohl zur Verschlüsselung als auch zur digitalen Signatur verwendet werden kann.[1] Es verwendet ein Schlüsselpaar, bestehend aus einem privaten Schlüssel, der zum Entschlüsseln oder Signieren von Daten verwendet wird, und einem öffentlichen Schlüssel, mit dem man verschlüsselt oder Signaturen prüft. Der private Schlüssel wird geheim gehalten und kann nur mit extrem hohem Aufwand aus dem öffentlichen Schlüssel berechnet werden.

RSA-Kryptosystem

d.h. wenn du das szenario hast

A ------------> Nachricht ------------> B

B ------------> Nachricht ------------> A

brauchst du 2 unterschiedliche private keys + zugehörige public keys

erstellbar durch :



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Security.Cryptography;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
var rsa = new RSACryptoServiceProvider();
richTextBox1.Text = rsa.ToXmlString(true);//privater key (public + privater key NUR FÜR DICH !!!)
richTextBox2.Text = rsa.ToXmlString(false);// nur der public key ( für die anderen leute zum verschlüsseln )
}
}
}


05.02.2013 - 11:12 Uhr

probiere mal bitte den umweg

  1. erstelle eine 1*.bat datei die dir deine updater exe startet

  2. erstelle eine updater exe die dir beim start die 1*.bat und die programm.exe löscht

  3. wenn die updater.exe die 2 dateien gelöscht bekommen hat ( system.file.info ... file exist )
    dann lade die neue programm.exe herunter

  4. erstelle eine 2*.bat die dir deine hauptanwendung startet

  5. beende die updater.exe und starte die 2*.bat

  6. prüfe in deiner programm .exe ob die 2*.bat und die updater.exe noch da sind und lösche sie

  7. sollte fertig sein

edit : was du aber auch machen kannst, der 1*.bat datei sagen "del programm.exe" dann bekommst du keine exception 😉

edit2 : 1*.bat und 2*.bat sind 2 untereinander verschiedene bat dateien mit einem freiwählbaren namen