Função de Criptografia? A..Z, 0..9

14/01/2006

Boa Dia!

Eu estou a procura de um função de criptografia/descriptografia que me retorne apenas caracteres de A..Z ou 0..9

E que me retorne o mesmo número de caracteres da string que será passada para a função, assim por exemplo:

Senha:=Cript(´SENHA´) ->>>> Senha = ´ABCDE´

Se alguém puder me ajudar

Atenciosamente

Luís Erucci


Erucci

Respostas

14/01/2006

Edilcimar

Qualquer criptografia depende de mudança do caracter original para outro, vamos supor que vc crie uma criptografia simples, pega um caracter qualquer e soma 1 ao seu valor, se o valor é 1 ele transforma para 2, se é a ele transforma para b, aí eu pergunta se for z, você transforma em que? Vamos supor que o z vc transforme em x (caracter -1), e depois na hora de descriptografar, o x veio do z (-1) ou veio do x(+1)?


Responder Citar

14/01/2006

Erucci

Bem, o Z poderia continuar sendo Z... ou algo assim, eu só precisava de uma função simples mesmo.... mas que fosse útil e funcionasse... eu posso fazer uma aqui... mas queria ver se alguém teria alguma idéia....


Responder Citar

14/01/2006

Aasn

Fala garoto!

function Crypt(Action, Src: String): String;
label Fim;
var KeyLen    : Integer;
    KeyPos    : Integer;
    OffSet    : Integer;
    Dest,
    Key       : String;
    SrcPos    : Integer;
    SrcAsc    : Integer;
    TmpSrcAsc : Integer;
    Range     : Integer;
begin
if (Src = ´´) Then
   begin
   Result:= ´´;
   Goto Fim;
   end;
Key := ´YUQL23KL23DF90WI5E1JAS467NMCXXL6JAOAUWWMCL0AOMM4A4VZYW9KHJUI2347EJHJKDF3424SKL K3LAKDJSL9RTIKJ´;

// ou apenas

Key := ´ABCDEF´;
Dest   := ´´;
KeyLen := Length(Key);
KeyPos := 0;
SrcPos := 0;
SrcAsc := 0;
Range  := 256;
if (Action = UpperCase(´C´)) then
   begin
   Randomize;
   OffSet := Random(Range);
   Dest := Format(´¬1.2x´,[OffSet&93;);
   for SrcPos := 1 to Length(Src) do
       begin
       Application.ProcessMessages;
       SrcAsc := (Ord(Src[SrcPos&93;) + OffSet) Mod 255;
       if KeyPos < KeyLen then
          KeyPos := KeyPos + 1
       else
          KeyPos := 1;
       SrcAsc := SrcAsc Xor Ord(Key&91;KeyPos&93;);
       Dest := Dest + Format(´¬1.2x´,&91;SrcAsc&93;);
       OffSet := SrcAsc;
       end;
   end
Else 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&91;KeyPos&93;);
      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;
Fim:
end;



Responder Citar

15/01/2006

Dart

AASN esse eh boa mas eh grande


Erucci tenta essa
function Criptografia(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;



Responder Citar

15/01/2006

Dart

AASN esse eh boa mas eh grande Erucci tenta essa [quote:98876aab59] A função Criptografia pode ser usada para criptografar a senha acesso ao sistema. Ela é usada nos dois sentidos, para criptografar e descriptografar, desde que seja usada a mesma chave nas duas operações. ´mStr´ é a String que vai ser criptografada e ´mChave´ é a String que sera usada como base para fazer a criptografia. function Criptografia(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;
[/quote:98876aab59]


Responder Citar

16/01/2006

Erucci

Muito obrigado pela atenção de vocês, porém minha dúvida não foi resolvida.

Eu já possuía essas 2 funções de criptografia, a primeira retorna um número grande de caracteres, sendo que eu preciso indicar uma string de 8 caracteres e a criptografia me retornar outra string com também 8 caracteres.

A segunda rotina não me traz apenas os caracteres de A..Z ou 0..9, sendo que eu preciso passar esse código via telefone.

Se alguém tiver mais alguma para me ajudar

Atenciosamente

Luís Erucci


Responder Citar