Einzelnen Beitrag anzeigen

heiopei
(Gast)

n/a Beiträge
 
#1

buchstaben-verschiebung optimieren...

  Alt 17. Apr 2006, 14:56
hallo,
ich hab neulich in ner alten pc-zeitschrift nen artikel gefunden, in dem gezeigt wurde, dass windows xp neben der "normalen" Dateibenutzungs-history diese zugriffe auch in der registry mitschreibt (bei mir rund 1400 einträge ).
dabei werden jedoch alle buchstaben(!!!) um 13 nach vorn verschoben (z.b. C => P) und die einträge somit "verschlüsselt" - entweder, dass nicht jeder depp die einträge entdeckt, oder zur "sicherheit", dass andere programme diese einträge nicht ohne weiteres lesen können (rechtliche absicherung ).

=> man muss alle buchstaben wieder um 13 nach hinten verschieben, um die dateipfade lesbar zu machen

soweit so gut.

jetzt hab ich mir quick'n dirty ein programm geschrieben, dass diese einträge ausließt und sie schließlich entschlüsselt anzeigt. funktioniert bestens.

jetzt zur frage: man ist natürlich wieder perfektionist(ähm naja ein bisschen zumindest) und will alles verbessern. hier den verschliebungs-algo...:

Delphi-Quellcode:
const
  Shifter = 13;
...
function Shift_Letter(Letter: Char): Char;
const
  letters: array [1..52] of Char = (
  'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
  'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
  'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
  'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
var
  b: Byte;
begin
  result := letter;
  for b := 27 to 52 do
    if letter = letters[b] then
    begin
      result := letters[b - Shifter];
      Exit;
    end
    else if UpperCase(letter) = letters[b] then
    begin
      result := Chr(Ord(letters[b - Shifter]) + 32);
      Exit;
    end;
end;
...
d.h. ich definiere den verschiebungswert "shifter"(im bsp. 13) und vergleiche jeden buchstaben mit der tabelle "letters" (aber nur von index 27 bis 52). ist der buchstabe mit dem eintrag der tabelle gleich, gehe ich einfach in der tabelle um den wert "shifter" zurück, und gebe den buchstaben, der sich dort befindet aus. (ich berücksichtige dabei auch groß-/kleinschreibung...)

jetzt wollt ich nur wissen, inwiefern ich den algo optimieren kann (z.b. verzicht auf das array?...)

mfg,
heiopei
  Mit Zitat antworten Zitat