Criptografar String e Arquivos Compactados
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...
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
Curtidas 0
Respostas
Leonardo Xavier
23/11/2013
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.
GOSTEI 0
Kevin Tank
23/11/2013
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.
Desde já agradeço.
GOSTEI 0
Itamar Souza
23/11/2013
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,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...
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
GOSTEI 0
Kevin Tank
23/11/2013
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...
Abraços...
GOSTEI 0
Manoel Jr
23/11/2013
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.
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.
GOSTEI 0
Kevin Tank
23/11/2013
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.
Legenda:
Btn_open = TButton
Btn_save = TButton
Rhe_code = TRichEdit
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
GOSTEI 0
Manoel Jr
23/11/2013
Agora sim posso te ajudar você possui um email para que eu possa te mandar umas units de criptografia?
GOSTEI 0
Kevin Tank
23/11/2013
Muito Obrigado Manoel, tenho sim use este: k4suse.kubbe@outlook.com
GOSTEI 0
Manoel Jr
23/11/2013
Muito Obrigado Manoel, tenho sim use este: k4suse.kubbe@outlook.com
Ok logo mais a noite te envio.
GOSTEI 0
Kevin Tank
23/11/2013
Até agr nada, tenta mandar pra este aqui: tan_kinho@hotmail.com ou kevintank@outlook.com
GOSTEI 0
Manoel Jr
23/11/2013
Enviei o arquivo novamente veja se recebeu.
GOSTEI 0
Kevin Tank
23/11/2013
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
GOSTEI 0
Manoel Jr
23/11/2013
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..
GOSTEI 0
Deivison Melo
23/11/2013
Finalizando o tópico!!
GOSTEI 0