Gravar arquivo criptografando

24/09/2004

iai pessoal... acabei de me cadastrar no forum :)

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&93;)+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

Respostas

24/09/2004

Rômulo Barros

S : String;
s:= gridC.cells[0,1&93; + IntToStr(150); 
writeln(vFile, S); 



Responder Citar

24/09/2004

Niflheim

blz kra... mas isso ai nao vai indexar o valor do grid com o 150 ????
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:


Responder Citar

24/09/2004

Rômulo Barros

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

:?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?: :?:


Responder Citar

24/09/2004

Niflheim

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 :?:


Responder Citar

24/09/2004

Rômulo Barros

o valor do A em decimal seria 65, com mais 150 ficaria 215


Como isso é possível? ´A´ é ´A´ .... ´65´ é ´65´


Responder Citar

24/09/2004

Niflheim

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:
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?


Responder Citar

24/09/2004

Mago M3rl1n

Para saber o valor ASCII de um caracter, utilize a função ORD.


Responder Citar

24/09/2004

Niflheim

ops... demorei mas voltei :P
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???


Responder Citar

24/09/2004

Gandalf.nho

A função que retorna o tamanho de uma string é [b:9e5b7a3f37]Length[/b:9e5b7a3f37]


Responder Citar

24/09/2004

Niflheim

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:


Responder Citar

28/09/2004

Niflheim

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???


Responder Citar

28/09/2004

Dopi

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.
/////////////////////////////////////////////////////////
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&93;) xor ord(mChave&91;pos&93;);
   if posLetra = 0 then
      posLetra := ord(Result[i&93;);

   Result&91;i&93; := chr(posLetra);
end;

end ;



Use a mesma chave ´string´ para embaralhar e desembaralhar....


Responder Citar

28/09/2004

Beppe

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));


Responder Citar

28/09/2004

Niflheim

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


Responder Citar

30/09/2004

Beppe

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.


Responder Citar