AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Frage Betreffs einer simplen Verschlüsselung

Frage Betreffs einer simplen Verschlüsselung

Ein Thema von Sonic-Y3k · begonnen am 18. Dez 2008 · letzter Beitrag vom 22. Dez 2008
 
Sonic-Y3k

Registriert seit: 16. Sep 2007
Ort: Hamburg
3 Beiträge
 
RAD-Studio 2009 Ent
 
#1

Frage Betreffs einer simplen Verschlüsselung

  Alt 18. Dez 2008, 15:24
Hi,
ich habe folgendes Denkproblem, ich würde gerne mit einem Filestream jeweils in kleinen Blöcken Datein, egal welcher Art laden und die Zeichen mittels Verschiebung ändern.
Leider kommt bei mir immer nur Quatsch bei raus, vlt. könnt ihr mir helfen.

Gruß,

Delphi-Quellcode:
unit UnitMainForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;

type
  TMainForm = class(TForm)
    ButtonEncrypt: TButton;
    OpenDialogEncrypt: TOpenDialog;
    Memo1: TMemo;
    Button1: TButton;
    ProgressBar1: TProgressBar;
    function Encode(what: string; key: Integer): WideString;
    function Decode(what: string; key: Integer): WideString;
    function GenerateKey: Integer;
    procedure ButtonEncryptClick(Sender: TObject);
    procedure HandleFile(done:Longint; Filename: String);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  MainForm: TMainForm;

implementation

{$R *.dfm}

function TMainForm.Encode(what: string; key: Integer): WideString;
var
  i, o: integer;
  res: string;
begin
  i:= 0;
  while i < length(what)-1 do
  begin
    o:= ord(what[i])+key;
    if o > 255 then
      o := o-255;

    res := res+chr(o);
    if what[i+1] = 'then
      i:= length(what)
    else
      inc(i);
  end;
  Result:= res;
end;

function TMainForm.Decode(what: string; key: Integer): WideString;
var
  i, o: integer;
  res: string;
begin
  for i:=0 to length(what)-1 do
  begin
    o:= ord(what[i])-key;
    if o < 0 then
      o := o+255;

    res := res+chr(o);
  end;
  Result:= res;
end;

function TMainForm.GenerateKey: Integer;
begin
  randomize;

  Result:= random(79)+20;
end;

procedure TMainForm.Button1Click(Sender: TObject);
const
  BufferSize= 1024;
var
  WStream,Stream: TFileStream;
  d,Buffer: WideString;
  done: LongInt;
  Key: Integer;
begin
  if OpenDialogEncrypt.Execute then
  try
    Stream := TFileStream.Create(OpenDialogEncrypt.FileName, fmOpenRead);
    WStream := TFileStream.Create(OpenDialogEncrypt.FileName+'.txt', fmOpenWrite or fmCreate);

    Done:= 2;
    Stream.Read(Key, SizeOf(2));
    while (done < Stream.Size) do
    begin
      Stream.Seek(done, soBeginning);
      Stream.Read(Buffer[1], BufferSize);
      done := done+BufferSize;
      d:= Decode(Buffer, Key);
      WStream.Write(d[1], length(d));
    end;
  finally
      Stream.Free;
      WStream.Free;
  end;
end;

procedure TMainForm.ButtonEncryptClick(Sender: TObject);
begin
  if MainForm.OpenDialogEncrypt.Execute then
  begin
    HandleFile(0, OpenDialogEncrypt.Filename);
  end;
end;

procedure TMainForm.HandleFile(done:Longint; Filename: String);
const
  BufferSize = 1024;
var
  Stream, WStream: TFileStream;
  Buffer,d,Key: String;
  s, k: WideString;
  i: integer;
begin

  try
    SetLength(Buffer, BufferSize);
    Stream := TFileStream.Create(Filename, fmOpenRead);
    WStream := TFileStream.Create(Filename+'.txt', fmOpenWrite or fmCreate);

    Key := IntToStr(GenerateKey);
    WStream.Write(Key[1], 1);
    WStream.Write(Key[2], 1);
    WStream.Seek(2, soBeginning);
    done := 0;

    ProgressBar1.Max :=Stream.Size;
    ProgressBar1.Position := 0;
    ProgressBar1.Min := 0;

    while (done < Stream.Size) do
    begin
      Stream.Seek(done, soBeginning);
      Stream.Read(Buffer[1], BufferSize);
      done := done+BufferSize;
      ProgressBar1.Position := done;
      d:= Encode(Buffer, StrToInt(Key));
      WStream.Write(d[1], length(d));
    end;

  finally
      Stream.Free;
      WStream.Free;
  end;
end;

end.
Angehängte Dateien
Dateityp: rar crypto_shit_852.rar (222,8 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:23 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