Announcement

Collapse
No announcement yet.

Buchstabe für Buchstabe ersetzen ???

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Buchstabe für Buchstabe ersetzen ???

    Hi!

    Ich möchte einen String Buchstabe für Buchstabe verschlüsseln - d.H. das z.b. soll aus nem 'a' ein 'p', aus nem 'b' ein 'm' werden usw...

    Wie könnte ich sowas realisieren??

    Danke schonmal

    Mathias

  • #2
    Hi

    <pre>

    var
    Table: array[Char] of Char;<br>

    procedure InitTable(Key: DWord);
    var
    I: Integer;
    J,T,R: Char;
    S: DWord;
    begin
    S := RandSeed;
    try
    RandSeed := Key;
    for I := Low(Table) to High(Table) do
    Table[I] := I;
    for I := 0 to 1024 do
    begin
    J := Char(Random(256));
    R := Char(Random(256));
    T := Table[J];
    Table[J] := Table[R];
    Table[R] := T;
    end;
    finally
    RandSeed := S;
    end;
    end;<br>

    function Convert(const S: String): String;
    var
    I: Integer;
    begin
    SetLength(Result, Length(S));
    for I := 1 to Length(S) do
    Result[I] := Table[S[I]];
    end;<br>

    </pre>

    Zuerst InitTable(1234) aufrufen und danach den String mit Convert() umsetzen.

    <b>kryptographisch sicher</b> ist das auf keinen Fall.
    <li>Random() ist der schlechteste Zufallsgenerator den's gibt
    <li>Convert() führt nur eine Transposition-Verschlüsselung durch
    <li>Key ist mit 2^32 Kombinationen viel zu klein

    Gruß Hage

    Comment


    • #3
      Hi!

      Irgendwie hab ich mich glaub ein wenig missverständlich ausgedrückt ... sorry...

      Nach deinem Beispiel ist es ja eine Zufalls Zahl - ich möcht aber das es immer in einen von mir bestimmbaren Buchstaben umgewandelt werden soll. Es geht mir auch nicht um die Sicherheit sondern nur darum das die Daten nicht ganz im Klartext stehen sollten.

      Also soll a immer zu nem p werden

      Übrigens denk ich ned mal das der Code dann so einfach geknackt werden kann weil niemand ein unverschlüsseltes Wort einsehen kann das dann verschlüsselt wird, und auch niemand den Code einsehen kann... also reicht das für meine Zwecke vollkommen

      Also bitte nochmal n kleines Beispiel...

      Danke nochmal und auch gleich im Vorraus falls mir jemand helfen kann.

      Mathia

      Comment


      • #4
        <pre>
        Hallo, vielleicht das folgende als Anregung..

        (für Grossbuchstaben Strings sub1, sub2 erweitern falls erforderlich)

        ..

        const
        sub1: string = ' abcdefghijklmnopqrstuvwxyz1234567890';
        sub2: string = '~qw9za2sx3edc7rf6vtgby0h4nujm5ik8ol1p';

        implementation

        {$R *.DFM}

        {************************************************* *********************}
        {* S c r a m b l e *}
        {************************************************* *********************}
        function Scramble(pwd: string):string;
        var
        str : string;
        i,k,m : integer;
        begin
        str := '';
        m := Length(pwd);
        for i := 1 to m do
        begin
        for k := 1 to Length(sub1) do
        begin
        if pwd[i] = sub1[k]
        then begin
        str := str + sub2[k];
        break;
        end;
        end;
        end;
        Result := str;
        end;

        {************************************************* *********************}
        {* D e S c r a m b l e *}
        {************************************************* *********************}
        function DeScramble(pwd: string):string;
        var
        str : string;
        i,k,m : integer;
        begin
        str := '';
        m := Length(pwd);
        for i := 1 to m do
        begin
        for k := 1 to Length(sub1) do
        begin
        if pwd[i] = sub2[k]
        then begin
        str := str + sub1[k];
        break;
        end;
        end;
        end;
        Result := str;
        end;

        procedure TForm1.Button1Click(Sender: TObject);
        begin
        Label1.Caption := Scramble(LowerCase(Edit1.Text));
        end;

        procedure TForm1.Button2Click(Sender: TObject);
        begin
        Edit1.Text := Descramble(Label1.Caption);
        end;

        Was 'Sicherheit' angeht, hat Hagen natürlich recht...

        Gruss Max
        </pre&gt

        Comment

        Working...
        X