Gravar arquivo criptografando
iai pessoal... acabei de me cadastrar no forum :)
eu estou tentando criptografar um arquivo para ser gravado posteriormente da seguinto maneira
sei q não funciona pq ele não aceita converter um nome de pessoa, por exemplo, em inteiro...
a ideia seria essa... converter para um texto para numerico, adicionar um valor, e depois gravalo
para abrir o arquivo seria feito o seguinte
agradeço qualquer ajuda :twisted: [/code]
eu estou tentando criptografar um arquivo para ser gravado posteriormente da seguinto maneira
// suplonha q eu tenha uma variavel String chamada S // ela vai receber um valor do grid criptografando o msm // depois grava num arquivo TextFile q eu criei. // oq eu queria fazer era +/- isso s:= IntToStr(StrToInt(gridC.cells[0,1])+150); writeln(vFile, S);
sei q não funciona pq ele não aceita converter um nome de pessoa, por exemplo, em inteiro...
a ideia seria essa... converter para um texto para numerico, adicionar um valor, e depois gravalo
para abrir o arquivo seria feito o seguinte
S:= IntToStr(StrToInt(readln(vFile))-150);
agradeço qualquer ajuda :twisted: [/code]
Niflheim
Curtidas 0
Respostas
Rômulo Barros
24/09/2004
S : String; s:= gridC.cells[0,1] + IntToStr(150); writeln(vFile, S);
GOSTEI 0
Niflheim
24/09/2004
blz kra... mas isso ai nao vai indexar o valor do grid com o 150 ????
tipo, ficaria assim
:wink:
oq eu queria era pegar o valor em numerico ai eu somo um valor qualquer e depois gravo, assim o nome
seria gravado como
por exemplo
:roll:
tipo, ficaria assim
rafael150
:wink:
oq eu queria era pegar o valor em numerico ai eu somo um valor qualquer e depois gravo, assim o nome
rafael
seria gravado como
fedgse
por exemplo
:roll:
GOSTEI 0
Rômulo Barros
24/09/2004
blz kra... mas isso ai nao vai indexar o valor do grid com o 150 ????
tipo, ficaria assim
[quote:6623b47503]rafael150
:wink:
oq eu queria era pegar o valor em numerico ai eu somo um valor qualquer e depois gravo, assim o nome
rafael
seria gravado como
fedgse
por exemplo
:roll:[/quote:6623b47503]
:arrow: Pra ser sincero... Não entendi nada
:?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?:
GOSTEI 0
Niflheim
24/09/2004
hehehehe... olha soh
vamos supor q eu tenha no grid o valor ´A´
se eu simplesmente mandar gravar no arquivo texto ele ficaria gravado o ´A´ nesse arquivo certo? qualquer pessoa q abrisse o arquivo poderia ler as informações gravadas
por isso eu quero alterar esse valor...
tipow... A + 150
o valor do A em decimal seria 65, com mais 150 ficaria 215
entao ele gravaria no arquivo o ´Î´ que eh o valor em caracter para o 215
esta entendendo :?:
vamos supor q eu tenha no grid o valor ´A´
se eu simplesmente mandar gravar no arquivo texto ele ficaria gravado o ´A´ nesse arquivo certo? qualquer pessoa q abrisse o arquivo poderia ler as informações gravadas
por isso eu quero alterar esse valor...
tipow... A + 150
o valor do A em decimal seria 65, com mais 150 ficaria 215
entao ele gravaria no arquivo o ´Î´ que eh o valor em caracter para o 215
esta entendendo :?:
GOSTEI 0
Rômulo Barros
24/09/2004
[quote´´Vc Escreveu´]o valor do A em decimal seria 65, com mais 150 ficaria 215
Como isso é possível? ´A´ é ´A´ .... ´65´ é ´65´
GOSTEI 0
Niflheim
24/09/2004
65 eh o codigo ascii para o A
entaum se eu converter o A para decimal ficaria 65
em C/C++ isso eh bem facil, mas no delphi eu nao sei como fazer :s
faça o teste
tecle ai:
isso resulta no A certo???
tente o seguinte agora
isso resulta no Î
era isso q eu tava dizendo...
como eu faço para pegar o valor ascii de uma letra... alias
eu preciso converter a string inteira... tem como?
entaum se eu converter o A para decimal ficaria 65
em C/C++ isso eh bem facil, mas no delphi eu nao sei como fazer :s
faça o teste
tecle ai:
Alt + 65
isso resulta no A certo???
tente o seguinte agora
Alt + 215
isso resulta no Î
era isso q eu tava dizendo...
como eu faço para pegar o valor ascii de uma letra... alias
eu preciso converter a string inteira... tem como?
GOSTEI 0
Mago M3rl1n
24/09/2004
Para saber o valor ASCII de um caracter, utilize a função ORD.
GOSTEI 0
Niflheim
24/09/2004
ops... demorei mas voltei :P
uhmm blz intaum...
acho q o geito eh fazer isso convertendo caracter por caracter msm :?
entaum qual eh a função q retorna o tamanho de uma string???
ORD
uhmm blz intaum...
acho q o geito eh fazer isso convertendo caracter por caracter msm :?
entaum qual eh a função q retorna o tamanho de uma string???
GOSTEI 0
Gandalf.nho
24/09/2004
A função que retorna o tamanho de uma string é [b:9e5b7a3f37]Length[/b:9e5b7a3f37]
GOSTEI 0
Niflheim
24/09/2004
ok pessoal valew... :)
vou fazer esse esquema ai depois eu posto no forum de exemplo e mini programas...
tem isso aqui tbm? :lol:
vou dar uma olhada...
obrigado pela ajuda pessoal :wink:
vou fazer esse esquema ai depois eu posto no forum de exemplo e mini programas...
tem isso aqui tbm? :lol:
vou dar uma olhada...
obrigado pela ajuda pessoal :wink:
GOSTEI 0
Niflheim
24/09/2004
Pronto Pessoal... jah esta pronto o esquema de criptografar o arquivo antes de salva-lo q eu queria fazer...
eu vi q tem uma seção dicas aqui..
pra quem eu mando para q postem???
eu vi q tem uma seção dicas aqui..
pra quem eu mando para q postem???
GOSTEI 0
Dopi
24/09/2004
Só por curiosidade....
O que acontece se você ultrapassar o 255.... A tabela ASC 2 acaba no 255.
Ex: ç = 135 Somando 150 temos 285 que não existe na tabela ASC2...
Uma vez fiz uma rotina so genero que invertia a posição dos 2 ultimos digitos da tabela ASC.
Ex: (A) 65 = 56 (8)), (ç) 135 = 153 (Ö), Assim não havia perigo de ´estouro´....
Mas essa rotina aqui faz um ´estrago´ bem maior...... usando xor.
Use a mesma chave ´string´ para embaralhar e desembaralhar....
O que acontece se você ultrapassar o 255.... A tabela ASC 2 acaba no 255.
Ex: ç = 135 Somando 150 temos 285 que não existe na tabela ASC2...
Uma vez fiz uma rotina so genero que invertia a posição dos 2 ultimos digitos da tabela ASC.
Ex: (A) 65 = 56 (8)), (ç) 135 = 153 (Ö), Assim não havia perigo de ´estouro´....
Mas essa rotina aqui faz um ´estrago´ bem maior...... usando xor.
///////////////////////////////////////////////////////// function StrCrypt(mStr, mChave: string): string; ///////////////////////////////////////////////////////// var i, TamanhoString, pos, PosLetra, TamanhoChave: Integer; begin Result := mStr; TamanhoString := Length(mStr); TamanhoChave := Length(mChave); for i := 1 to TamanhoString do begin pos := (i mod TamanhoChave); if pos = 0 then pos := TamanhoChave; posLetra := ord(Result[i]) xor ord(mChave[pos]); if posLetra = 0 then posLetra := ord(Result[i]); Result[i] := chr(posLetra); end; end ;
Use a mesma chave ´string´ para embaralhar e desembaralhar....
GOSTEI 0
Beppe
24/09/2004
O que acontece se você ultrapassar o 255.... A tabela ASC 2 acaba no 255.
Os bits restantes seram ignorados, apenas os 8 bits mais significativos seram considerados no caractere.
Assert(Chr(AlgumInteiro) = Chr(AlgumInteiro and $ff));
GOSTEI 0
Niflheim
24/09/2004
Os bits restantes seram ignorados
exato... isso eh feito de uma forma muito grotesca... ele simplesmente corta os bits sem acusar erro nem ecxeções...
eu tinha esquecido desses caracteres com acentuação... :?
gostei desse teu metodo Dopi... vou pensar em fazer alguma coisa desse tipo
valew :D
GOSTEI 0
Beppe
24/09/2004
O Delphi não levanta exceções porque nós desabilitamos isto. Vá nas opções do projeto e marque ´Range checking´. Pode fazer localmente tb com diretivas.
GOSTEI 0
Paulo_amorim
24/09/2004
Olá
Já fiz umas rotininhas bobas de criptografia pra eu mandar emails, mas nada muito sério:
- Pode-se usar o mesmo usado para criptografia simples de e-mail, que troca o A pelo N, B por O, etc...
- Pode-se adicionar Ord + 10 se o Ord for par, Ord + 18 se for ímpar por ex. (não se esquecer que se adicionar/subtrair PAR em um, tem que ser PAR no outro e vice-versa, senão dá pau)
- Pode-se adicionar um número se o Ord for até um número (p.ex. 90) e acima disso subtrair um número (se o Ord > que 90, p.ex.)
Essas rotinas prevêm o corte de bits pois nunca atingem 255
Espero que ajude
AtÉ+
Já fiz umas rotininhas bobas de criptografia pra eu mandar emails, mas nada muito sério:
- Pode-se usar o mesmo usado para criptografia simples de e-mail, que troca o A pelo N, B por O, etc...
- Pode-se adicionar Ord + 10 se o Ord for par, Ord + 18 se for ímpar por ex. (não se esquecer que se adicionar/subtrair PAR em um, tem que ser PAR no outro e vice-versa, senão dá pau)
- Pode-se adicionar um número se o Ord for até um número (p.ex. 90) e acima disso subtrair um número (se o Ord > que 90, p.ex.)
Essas rotinas prevêm o corte de bits pois nunca atingem 255
Espero que ajude
AtÉ+
GOSTEI 0
Niflheim
24/09/2004
esqueci de mandar o fonte q eu criei neh :?
ai vai :wink:
para criptografia essa eh a função:
ai vai :wink:
procedure TFrmPrincipal.GravarDados; var vLin, vCol : Integer; vFile : TextFile; cripto: string; begin //Associa arquivo ao nome gravado no dlgSalvar AssignFile(vFile, dlgSalvar.FileName); // Cria um novo arquivo esterno com o nome associcado ReWrite(vFile); FOR vLin := 1 TO grdContatos.RowCount - 2 DO FOR vCol := 0 TO 3 DO begin // Criptografa o valor da Celula e atribui o mesmo a cripto cripto := criptografar(grdContatos.Cells[vCol, vLin], true); // Grava conteudo do grid no arquivo e pula para proxima linha WriteLn(vFile,cripto); end; // Fecha a associacao entre a variavel e o arquivo externo CloseFile(vFile); showMessage(´Arquivo Salvo com Sucesso.´); // Mostra para o usuario q o arquivo foi salvo end;
para criptografia essa eh a função:
function TFrmPrincipal.criptografar(S: string; Opc: boolean): string; var aux: string; i: integer; begin // Limpa Variavel Aux aux := ´´; // Repete de 1 ate o tamanho da String passada por parametro for i:= 1 to Length(s) do begin // Se opcao eh gravacao if Opc then aux:= aux + Chr(Ord(s[i])+35) else // Se for Leitura aux:= aux + Chr(Ord(s[i])-35) end; Result := aux; end;
GOSTEI 0
Cebikyn
24/09/2004
eu vi q tem uma seção dicas aqui..
pra quem eu mando para q postem???
Pode postar, da mesma maneira que você fez na seção Delphi, quando criou este tópico.
GOSTEI 0
Niflheim
24/09/2004
opsssss :oops:
nessa eu fui bem limitado.... eu nem tentei postar lah pra ver se eu conseguia :roll: heheheh
falow pessoal...
vou fazer tbm os outros metodos q vcs citaram ... :wink:
nessa eu fui bem limitado.... eu nem tentei postar lah pra ver se eu conseguia :roll: heheheh
falow pessoal...
vou fazer tbm os outros metodos q vcs citaram ... :wink:
GOSTEI 0