.NET doet raar

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 26-09 20:57
Ik ben voor een profielwerkstuk over cryptografie bezig met een programma dat wat simpele cryptografie doet zoals rot6 en rot13 maar ook een eigen verzinsel:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
(Encrypten)
Formule voor byte 1: wachtwoord * mod( data )
Formule voor byte 2: aantal keer dat het wachtwoord in de databyte past
bijvoorbeeld p=4 en data[]=10,23,64 (komma gescheiden bytes)
4 mod(10)=2,2
4 mod(23)=3,5
4 mod(64)=0,16
Samen wordt dit 2,2,3,5,0,16

(Decrypten)
Formule voor decryptie: (wachtwoord * byte2) + byte 1
Met p=4:
4 * 2 + 2 = 10
4 * 5 + 3 = 23
4 * 16 + 0 = 64
Samen wordt dit de orginele data: 10,23,64.
Bij een verkeerd wachtwoord, bijvoorbeeld p=3 wordt het 8,18,48=fout

Nu heb ik dit in .NET geimplementeerd:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
      public byte[] EncryptBytes(byte[] ToEncrypt) {
          byte[] ToReturn = new byte[this.GetEstimateFileSize(ToEncrypt.LongLength, true)];

          long i = 0;
          int passpointer = 0;
          foreach ( byte b in ToEncrypt ) {
              byte pass = this.password[passpointer];

              ToReturn[i] = (byte) ( b % pass );
              ToReturn[i + 1] = (byte) (( b - ( b % pass ) ) / pass);

              i += 2;
              if ( ++passpointer == this.password.Length ) {
                  passpointer = 0;
              }
          }

          return ToReturn;
      }

      public byte[] DecryptBytes(byte[] ToDecrypt) {
          byte[] ToReturn = new byte[this.GetEstimateFileSize(ToDecrypt.LongLength, false)];

          long i = 0;
          long j = 1;
          long r = 0;
          int passpointer = 0;
          while (  j  < ToDecrypt.LongLength ) {
              byte pass = this.password[passpointer];

              ToReturn[r] = (byte) (( pass * ToDecrypt[j] ) + ToDecrypt[i]);

              i+=2;
              j+=2;
              r++;
              if ( ++passpointer == this.password.Length ) {
                  passpointer = 0;
              }
          }

          return ToReturn;
      }

Dit werkt prima, behalve als je een wachtwoord langer dan 1 tekens neemt dat uit verschillende karakters (bytes) bestaat. Dan krijg je een gedeeltelijk corrupt bestand terug (de oorzaak weet ik ondertussen al). Op zoek naar de fout met de VS Debugger kom ik rare dingen tegen.

Zo geeft hij een keer hier ineens een Exception op:
C#:
1
2
3
4
5
        private void button_OutputFileBrowse_Click(object sender, EventArgs e) {
            if ( this.FileDialog_Output.ShowDialog(this) == DialogResult.OK ) {
                this.box_OutputFile.Text = this.FileDialog_Output.FileName;
            }
        }

(met als tekst: Poging tot het lezen of schrijven van beveiligd geheugen enz...)

Eerder kreeg ik ineens "An unhandled exception of type 'System.ExecutionEngineException' occurred in Unknown Module.". En ook een untraceable TargetInvocationException.

Andere .NET projecten en programma's lijken prima te werken op de PC. 'Normale' programma's werken ook prima. Wat zou dit kunnen zijn? Ik heb al geprobeerd om de computer de herstarten en .NET te repareren (setup optie). Dit helpt helaas niet.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • Daspeed
  • Registratie: Maart 2001
  • Laatst online: 10:45
Welke versie van .NET gebruik je? En heb je ook service packs voor die .NET versie geinstalleerd?

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 26-09 20:57
.NET is 3.5, met Service pack 1. Maar .NET versie van het project is 2.0 (dit heb ik expres gedaan omdat het ook op de schoolcomputers moet werken). IDE is Visual Studio 2008.

[ Voor 8% gewijzigd door Sebazzz op 12-12-2008 22:44 ]

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • Daspeed
  • Registratie: Maart 2001
  • Laatst online: 10:45
Doet het probleem zich ook voor als je zonder debugging draait?
Heb je ook de service pack voor VS2008?

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 26-09 20:57
Probleem doet zich ook voor in 'Release' mode als je dat bedoeld. Ik denk niet dat het buiten VS voorkomt. Service Pack zal ik downloaden.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 26-09 20:57
Okey, zo snel de problemen kwamen zijn ze ondertussen ook verdwenen :S

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]

Pagina: 1