AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi RC4 Implementierung - Problem mit längeren Texten
Thema durchsuchen
Ansicht
Themen-Optionen

RC4 Implementierung - Problem mit längeren Texten

Ein Thema von qwertz543221 · begonnen am 11. Jun 2009 · letzter Beitrag vom 11. Jun 2009
Antwort Antwort
Seite 2 von 2     12   
qwertz543221
(Gast)

n/a Beiträge
 
#11

Re: RC4 Implementierung - Problem mit längeren Texten

  Alt 11. Jun 2009, 20:05
vielen dank, das hat geholfen.


Jetzt klappt das ganze wie gewünscht. (abgesehen vom base64-längen-nebeneffekt)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: RC4 Implementierung - Problem mit längeren Texten

  Alt 11. Jun 2009, 20:42
Nja, Base64 ist immerhin noch kürzer als Hexadezimal

Base64 nutzt effektiv nur 5 Bit pro Zeichen, in ganzen Bit könnte man locker 7 verwenden und alles um 32 hochsetzen ... quasi Base128

Effektiv kann man aber in Ansi 256-32 Werte pro Zeichen codieren
und innerhalb des ASCII-Bereichs 128-32 Werte (da es dort nur 7 Bit gibt)
Bei einer größeren Packungsdichte würden dann aber die Berechnungen etwas aufwändiger und die zusammenhängenden Blöcke größer.
> Base64 = 3 Byte in 4 Zeichen = 33% größer
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: RC4 Implementierung - Problem mit längeren Texten

  Alt 11. Jun 2009, 21:15
Delphi-Quellcode:
rc4init(memo1.Text);
text:=memo2.Text;
textneu:=rc4encdec(text);
memo2.Text:=textneu;
Wie schon himitsu bereit erwähnt hat, wird ein String, das #0 enthält, nicht ganz angezeit (0 wird als Nullterminierung interpretiert)
Kannst gern ausprobieren, falls du es nicht glaubst / verstehst:

Delphi-Quellcode:
var x:String;
x := 'Test'#0'Dies wird nicht gezeigt';
Ich würd das Problem einfach so lösen, dass ich mir das ganze als Hex anzeigen lasse:

Delphi-Quellcode:
function StrToHex(Str: String): String;
var
  i: Integer;
begin
  for i := 1 to Length( Str ) do
  begin
    Result := Format( '%s $%x', [Result, ORD( Str[i] ) ] );
    if i mod 16 = 0 then
      Result := Result + #13#10;
  end;
end;
oder, fall ich mal unbedingt den Text nicht durch das Kopfrechnen (Umrechnen von Hex auf Dez. und Ascii Characterdarstellung) erschätzen will, mach ich folgendes -> ich filter einfach alles, was nicht anzeigbar ist:

Delphi-Quellcode:
function FilterBadChars(Str: String; const FilterChar: Char = '.'): String;
var
  i: Integer;
begin
  Result := Str;
  for i := 1 to Length(Str) do
    if ORD(Str[i]) in [0..32, 130..255] then
      Result[i] := FilterChar;
end;
MfG
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 15:09 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz