Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#5

AW: Steganographie

  Alt 12. Feb 2011, 10:42
Ach ja, wie hast du denn geprüft, ob sich was verändert?
Eine Farbänderung von 1 ist mit blosem Auge nicht unbedingt erkennbar.

Und wenn man sich nochmal diesen Code vornimmt.
Delphi-Quellcode:
if (r mod 2) <> (strtoint(memo2.lines.text[letter])) then
begin
  if r mod 2 = 1 then
    r := r-1
  else
    r := r+1;
end;
PS: um eine größere/sichtbarere Änderung zu erziehlen
Delphi-Quellcode:
if (r mod 2) <> (strtoint(memo2.lines.text[letter])) then
begin
  if (r div 32) mod 2 = 1 then
    r := r - 32
  else
    r := r + 32;
end;
(oder 64, bzw. 128)

und nochmal verkürtzt (mit 1);
Delphi-Quellcode:
if (r mod 2) <> (strtoint(memo2.lines.text[letter])) then
begin
  if r mod 2 = 1 then
    r := r-1
  else
    r := r+1;
end;

// inneres IF rausgekürzt
if (r mod 2) <> strtoint(memo2.lines.text[letter]) then
begin
  r := r xor 1;
end;

// nun das äußere IF
r := (r and not 1) or (strtoint(memo2.lines.text[letter]) and 1);

// und da in Memo2 eh nur 0 oder 1 drinsteht
r := (r and not 1) or strtoint(memo2.lines.text[letter]);
PS:
das mathematische "r mod 2" entspricht dem binären "r and 1"
Da es sich hier um Bitmanipilationen handelt, ist es eigentlich passender, wenn man auch Bitoperationen verwendet, anstatt von Mathematischen.

"r xor 1", "r and 1" oder "r or 1" verändern nur das letzte Bit

"r and NOT 1" verändert alle Bits, bzw. läßt nur das letzte Bit übrig und löscht den Rest

Aktuell fragt ihr ab ob sich das letzte Bit enes Farbwertes von dem gewünschten Bit unterscheidet, wenn ja, dann wird nochmal nachgesehn, ob das Bit an oder aus ist und wird dann umgeschaltet ... kürzer geht es, wenn man einfach direkt das letzte Bit auf den gewünschten Wert setzt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat