AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

C++ Übersetzung klemmt

Ein Thema von totti14 · begonnen am 31. Mai 2010 · letzter Beitrag vom 31. Mai 2010
 
totti14

Registriert seit: 26. Mai 2005
Ort: Bremen
90 Beiträge
 
Delphi 10.3 Rio
 
#1

C++ Übersetzung klemmt

  Alt 31. Mai 2010, 15:21
Hallo,
ich muss gerade ein paar C Zeilen übersetzten. Aber da hier Äpfel und Birnen addiert werden komme ich nicht weiter.

Code:

struct crypt_block
{
  uint8 keytable[256];
  uint8 state;
  uint8 counter;
  uint8 sum;
};


static void init_crypt(struct crypt_block *block, uint8 *key, int len)
{
  block->state = *key;
  block->counter=0;
  block->sum=0;
}

static void crypt(struct crypt_block *block, uint8 *data, int len, crypt_mode_t mode)
{
  int i;
  uint8 z;

  for (i = 0; i < len; i++) {
    block->counter++;
    block->sum += block->keytable[block->counter];  
    z = data[i];
    data[i] = z ^ block->keytable[(block->keytable[block->counter] + block->keytable[block->sum]) & 0xff] ^ block->state;
    if (!mode) z = data[i];
    block->state = block->state ^ z;
  }
}
Geschrieben habe ich es nun so:

Delphi-Quellcode:
Type
  TCrypt_Block = Record
    keytable: Array [0 .. 255] of byte;
    state: PArray; // to key
    counter: byte;
    sum: byte;
  End;

  PCrypt_Block = ^TCrypt_Block;

procedure init_crypt(block: PCrypt_Block; key: PArray; len: Integer);
begin
  .........
  block^.state := @key;
  block^.counter := 0;
  block^.sum := 0;
end;

procedure crypt(block: PCrypt_Block; Data: PArray; len: Word; mode: TCrypt_Mode);
Var
  i: Integer;
  z : byte;
begin
  for i := 0 to len - 1 do
    begin
      Inc(block^.counter);
      block^.sum := block^.sum + block^.keytable[block^.counter];
      z := Data^[i];
      Data^[i] := z xor block^.keytable[(block^.keytable[block^.counter] + block^.keytable[block^.sum]) and $FF] xor block^.state; // hier klemmt es

      if mode = DECRYPT then
        z := Data^[i];
      block^.state := block^.state xor z; // und hier auch
    end;
end;
Aber beim block.state komme ich nicht weiter. Ist ja eigentlich ein Zeiger auf ein Array ?

Besten Dank
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz