GARANTIR DESCONTO

Fórum Criptografar String e Arquivos Compactados #461835

23/11/2013

0

Olá pessoal, sou novo aqui no site, estou desenvolvendo um mega projeto sozinho e não sei se é possivel realizar as seguintes etapas na segurança do app, são elas:

1 -- Embaralhar o counteúdo de um Arquivo '.txt' (Concluído);

2 -- Criptografar o Arquivo em sí (Através da Memória) (Não Concluído)

3 -- Comprimir o Arquivo criptografado (Bug de não ser possível descompactar)

4 -- Criptografar o arquivo compactado (Não Concluído)

Se alguém tiver um código fonto que possa me ajudar a realizar as etapas descritas seria de grande importância, por favor

A ideia é usar o mesmo codigo utilizando uma chave para criptografar e descriptografar o arquivo a quantidade de vezes que o numero de caracteres que a chave possuir

Por favor me ajudem galera, não vejo saída para o que estou projetando, Desde já agradeço...
Kevin Tank

Kevin Tank

Responder

Posts

25/11/2013

Leonardo Xavier

Kevin no projeto jedi tem um componente que gera serial pelo nome do utilizador, usei este componente para gerar senhas de usuários, mas você poderia utiliza-lo para criptografar seus documentos. cada letra de tara um numero dependendo do modo da criptografia. Acho que isso resolveria seu problemas mas o tópico sobre a memoria como seria isso? Não entendi.
Responder

Gostei + 0

27/11/2013

Kevin Tank

Olá Leonardo, obrigado pela dica, a memória no qual me refiro, seria embaralhar as informações(criptografar) do arquivo quando este está carregado na memória(Stream), no qual estas informações não são o que há dentro do arquivo e sim a estrutura que o arquivo possui para funcionar no windows, que como eu disse, está carregado na memória , e depois salvá-lo como um arquivo criptogrado, enquanto para descriptografá-lo, seria o processo inverso...

Desde já agradeço.
Responder

Gostei + 0

27/11/2013

Itamar Souza

Olá pessoal, sou novo aqui no site, estou desenvolvendo um mega projeto sozinho e não sei se é possivel realizar as seguintes etapas na segurança do app, são elas:

1 -- Embaralhar o counteúdo de um Arquivo '.txt' (Concluído);

2 -- Criptografar o Arquivo em sí (Através da Memória) (Não Concluído)

3 -- Comprimir o Arquivo criptografado (Bug de não ser possível descompactar)

4 -- Criptografar o arquivo compactado (Não Concluído)

Se alguém tiver um código fonto que possa me ajudar a realizar as etapas descritas seria de grande importância, por favor

A ideia é usar o mesmo codigo utilizando uma chave para criptografar e descriptografar o arquivo a quantidade de vezes que o numero de caracteres que a chave possuir

Por favor me ajudem galera, não vejo saída para o que estou projetando, Desde já agradeço...
Amigo,
Se você já esta embaralhando o conteúdo do arquivo, você poderia comprimir o arquivo adicionando a ele uma senha, não precisaria criptografar o arquivo compactado.
Veja se isso lhe ajuda e posta novamente


Amigo,
Se você já esta embaralhando o conteúdo do arquivo, você poderia comprimir o arquivo adicionando a ele uma senha, não precisaria criptografar o arquivo compactado.
Veja se isso lhe ajuda e posta novamente
Responder

Gostei + 0

27/11/2013

Kevin Tank

Olá Itamar, eu apenas gostaria de fazer esta rotina por questões de segurança, pois além de usar estes procedimentos no meu projeto, vou também praticamente criar um banco de dados com criptografia e compactação... por isto toda esta segurança;

Abraços...
Responder

Gostei + 0

29/11/2013

Manoel Jr

Achei sua questão muito ampla há várias coisas envolvidas, na verdade estou chegando a achar que você não quer uma ajuda e sim uma solução pronta, Forum é lugar para se tirar dúvidas então se você tem algo concreto feito ou em desenvolvimento, poste sua dúvida em relação a algo específico que poderemos ajudar, caso contrário não tem como.

Ex: Tenho uma duvida em relação a Criptografia de dados RSA que ai poderemos lhe dar um link [url]http://marcosalles.wordpress.com/2012/07/02/criptografia-rsa-no-delphi-uma-classe-simples/[/url] onde você pode pesquisar e DESENVOLVER o seu trabalho ou Projeto.

Espero ter ajudado.
Responder

Gostei + 0

30/11/2013

Kevin Tank

Olá Manoel vou mostrar o código fonte que desenvolvi até agora, não quero uma solução pronta, apenas uma saída para resultar em uma grande criptografia.
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, strutils, XPMan, ZLib, IniFiles;

function Crypt(Texto, senha: string): string;
var
  x, y: Integer;
  Novo: String;
begin
  for x := 1 to Length(senha) do begin
    Novo := '';
    for y := 1 to Length(Texto) do
      Novo := Novo + chr((Ord(Senha[x]) xor Ord(Texto[y])));
    Texto := Novo;
  end;
  Result := Texto;
end;

function MStrmToStr(M: TMemoryStream):string;
begin
  SetString(Result, PChar(M.Memory), M.size);
end;

procedure EnDecryptStream(FileIn, FileOut: TMemoryStream; Key: String);
var
  Arquivo: TMemoryStream;
  ArquivoString: string;
begin
  Arquivo := TMemoryStream.Create;
  Arquivo.LoadFromStream(FileIn);
  ArquivoString := MStrmToStr(Arquivo);
  ArquivoString := Crypt(ArquivoString, Key);
  Arquivo.Free;
  Arquivo := TMemoryStream.Create;
  Arquivo.WriteBuffer(Pointer(ArquivoString)^, Length(ArquivoString));
  Arquivo.SaveToStream(FileOut);
  Arquivo.Free;
  ArquivoString := '';
end;

function ExtractDiskSerial(Drive: String): String;
Var
  Serial:DWord;
  DirLen,Flags: DWord;
  DLabel: Array[0..11] of Char;
begin
  GetVolumeInformation(PChar (Drive+':\'), dLabel, 12, @Serial, DirLen, Flags, nil, 0);
  Result:= IntToHex(Serial, 8);
end;

function EnDecryptText(Action, Src, Key : String) : String;
var
   KeyLen: Integer;
   KeyPos: Integer;
   offset: Integer;
   dest: string;
   SrcPos: Integer;
   SrcAsc: Integer;
   TmpSrcAsc: Integer;
   Range: Integer;
begin
  Key:= Key + ExtractDiskSerial('C');
  dest:='';
  KeyLen:=Length(Key);
  KeyPos:=0;
  SrcPos:=0;
  SrcAsc:=0;
  Range:=256;
  if Action = UpperCase('E') then begin
    Randomize;
    offset:=Random(Range);
    dest:=format('%1.2x',[offset]);
    for SrcPos := 1 to Length(Src) do begin
      SrcAsc:=(Ord(Src[SrcPos]) + offset) MOD 255;
      if KeyPos < KeyLen then KeyPos:= KeyPos + 1 else KeyPos:=1;
      SrcAsc:= SrcAsc xor Ord(Key[KeyPos]);
      dest:=dest + format('%1.2x',[SrcAsc]);
      offset:=SrcAsc;
    end;
  end;
  if Action = UpperCase('D') then begin
    offset:=StrToInt('$'+ copy(src,1,2));
    SrcPos:=3;
    repeat
      SrcAsc:=StrToInt('$'+ copy(src,SrcPos,2));
      if KeyPos < KeyLen Then KeyPos := KeyPos + 1 else KeyPos := 1;
      TmpSrcAsc := SrcAsc xor Ord(Key[KeyPos]);
      if TmpSrcAsc <= offset then TmpSrcAsc := 255 + TmpSrcAsc - offset else TmpSrcAsc := TmpSrcAsc - offset;
      dest := dest + chr(TmpSrcAsc);
      offset:=srcAsc;
      SrcPos:=SrcPos + 2;
    until SrcPos >= Length(Src);
  end;
  result:= dest;
end;

procedure TMain.Btn_openClick(Sender: TObject);
var
  Temp1, Temp2: TMemoryStream;
  LineX: TStringList;
  I: Integer;
begin
  Try
  if Open = True then if MessageDlg('Save this KDB ?', mtConfirmation, mbOkCancel, 0) = idOk then Btn_saveClick(Sender);
  if OpenDialog1.Execute then begin
    I:= 0;
    LineX:= TStringList.Create;
    Temp1:= TMemoryStream.Create;
    Temp2:= TMemoryStream.Create;
    Temp1.LoadFromFile(OpenDialog1.FileName);
    EnDecryptStream(Temp1, Temp2, ExtractDiskSerial('C'));
//    Decompress(OpenDialog1.FileName, GetCurrentDir + '\temp.kdb');
    Temp2.Position:= 0;
    LineX.LoadFromStream(Temp2);
//    DeleteFile(GetCurrentDir + '\temp.kdb');
    Temp1.Free;
    Temp2.Free;
    Rhe_code.Lines.Clear;
    Repeat
      Rhe_code.Lines.Add(EnDecryptText('D', LineX[I], ExtractDiskSerial('C')));
      I:= I + 1;
    Until I = LineX.Count;
  end;
  Finally
    ShowMessage(TIniFile(LineX).ReadString('Mane', 'Money', 'ERR'));
    OpenDialog1.FileName:= '';
    LineX.Free;
  end;
end;

procedure TMain.Btn_saveClick(Sender: TObject);
var
  Temp1, Temp2: TMemoryStream;
  LineX: TStringList;
  I: Integer;
begin
  if SaveDialog1.Execute then begin
    I:= 0;
    LineX:= TStringList.Create;
    Repeat
      LineX.Add(EnDecryptText('E', Rhe_code.Lines[I], ExtractDiskSerial('C')));
      I:= I + 1;
    Until I = Rhe_code.Lines.Count;
    Temp1:= TMemoryStream.Create;
    Temp2:= TMemoryStream.Create;
    LineX.SaveToStream(Temp1);
//    Compress(SaveDialog1.FileName, SaveDialog1.FileName + '.kdb');
//    DeleteFile(SaveDialog1.FileName);
    EnDecryptStream(Temp1, Temp2, ExtractDiskSerial('C'));
    Temp2.SaveToFile(SaveDialog1.FileName + '.kdb');
    Btn_save.Enabled:= False;
    SaveDialog1.FileName:= '';
    Temp1.Free;
    Temp2.Free;
    LineX.Free;
  end;
end;


Legenda:

Btn_open = TButton
Btn_save = TButton
Rhe_code = TRichEdit
Responder

Gostei + 0

01/12/2013

Manoel Jr

Agora sim posso te ajudar você possui um email para que eu possa te mandar umas units de criptografia?
Responder

Gostei + 0

01/12/2013

Kevin Tank

Muito Obrigado Manoel, tenho sim use este: k4suse.kubbe@outlook.com
Responder

Gostei + 0

03/12/2013

Manoel Jr

Muito Obrigado Manoel, tenho sim use este: k4suse.kubbe@outlook.com


Ok logo mais a noite te envio.
Responder

Gostei + 0

04/12/2013

Kevin Tank

Até agr nada, tenta mandar pra este aqui: tan_kinho@hotmail.com ou kevintank@outlook.com
Responder

Gostei + 0

06/12/2013

Manoel Jr

Enviei o arquivo novamente veja se recebeu.
Responder

Gostei + 0

07/12/2013

Kevin Tank

Caaarrraa !! era isso mesmo mano, muito obrigado mesmo eu achei tanta coisa na internet sobre strings mas nunca achei como aplicar em arquivos, flw se eu puder te ajudar com algum arquivo é so falar, vlw
Responder

Gostei + 0

07/12/2013

Manoel Jr

Caaarrraa !! era isso mesmo mano, muito obrigado mesmo eu achei tanta coisa na internet sobre strings mas nunca achei como aplicar em arquivos, flw se eu puder te ajudar com algum arquivo é so falar, vlw


Por nada, Qualquer coisa é só falar..
Responder

Gostei + 0

07/12/2013

Deivison Melo

Finalizando o tópico!!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar