| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
RFG Novato

Registrado: Quarta-Feira, 18 de Mai de 2005 Mensagens: 85
|
Enviada: Qui Mai 05, 2011 12:58 pm Assunto: [Resolvido Duvida] - Tabela de Login com senha criptpgrafada |
|
|
Boa tarde amigos.
Estou desenvolvendo um programa com login e senha, mas gostaria que quando o cadastro do usuário fosse gravado no banco a senha armazenada já estivesse criptografada, para evitar que ninguém possa dar um select na tabela de usuário e visualize a senha. E se necessário recuperar apenas eu conheça como descriptografar. Isso é possível?
Obrigado.
Rildo Ferreira
Editado pela última vez por RFG em Qui Mai 05, 2011 7:50 pm, num total de 1 vez |
|
| Voltar ao Topo |
|
 |
abagattini Mestre

Registrado: Terça-Feira, 29 de Novembro de 2005 Mensagens: 758 Localização: Porto Alegre/RS
|
Enviada: Qui Mai 05, 2011 1:08 pm Assunto: |
|
|
| Código: |
function Cripto(Texto:String):String;
var Cont,Cod:Integer;Retorna:String;Letra:string[1];
begin
for Cont:=1 to Length(Texto)do
begin
Cod:=ValorAsc(Copy(Texto,Cont,1));
if ((Cont mod 5)=0)then Letra:=Chr(Cod+VALOR_CRIPTO_2)
else if((Cont mod 3)=0)then Letra:=Chr(Cod+VALOR_CRIPTO_3)
else if((Cont mod 2)=0)then Letra:=Chr(Cod+VALOR_CRIPTO_4)
else Letra:=Chr(Cod+VALOR_CRIPTO_1);
(*
if (Letra='/')then Letra:='b'
else if(Letra='\')then Letra:='c'
else if(Letra=':')then Letra:='d'
else if(Letra='"')then Letra:='e'
else if(Letra='<then> 0 then ValorAsc := Ord(Letra[1]) else ValorAsc := 0;
end;
|
|
|
| Voltar ao Topo |
|
 |
RFG Novato

Registrado: Quarta-Feira, 18 de Mai de 2005 Mensagens: 85
|
Enviada: Qui Mai 05, 2011 5:51 pm Assunto: |
|
|
Desculpa, onde devo criar? É em algum evento da tabela?
Obrigado.
Rildo Ferreira |
|
| Voltar ao Topo |
|
 |
rafacauly Aprendiz

Registrado: Quinta-Feira, 30 de Setembro de 2010 Mensagens: 194
|
Enviada: Qui Mai 05, 2011 5:57 pm Assunto: |
|
|
pelo q entendi essa função vc usa pra criptografar a senha e manda essa senha criptografado pro insert do banco...
se vc deseja mais segurança aconselharia a usar função de encriptação q não tem volta, tipo MD5. _________________ Jesus loves you! |
|
| Voltar ao Topo |
|
 |
RFG Novato

Registrado: Quarta-Feira, 18 de Mai de 2005 Mensagens: 85
|
Enviada: Qui Mai 05, 2011 6:34 pm Assunto: |
|
|
É que eu não devo ter sido claro. Quero criptografar a senha no cadastro do usuário e armazená-la criptografada no banco, mas se o usuário esquecer e pedir para recuperar eu consiga ler "Como seria para fazer isso?". E também no momento do login, no meu form de login eu utilizo TEdit para a senha. Quando digitar a senha ele vai consegui ler?
Obrigado.
Rildo Ferreira |
|
| Voltar ao Topo |
|
 |
rafacauly Aprendiz

Registrado: Quinta-Feira, 30 de Setembro de 2010 Mensagens: 194
|
Enviada: Qui Mai 05, 2011 6:52 pm Assunto: |
|
|
tenho uma :
| Código: |
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 :='YUQL23KL23DF90WI5E1JAS467NMCXXL6JAOAUWWMCL0AOMM4A 4VZYW9KHJUI2347EJHJKDF3424SKLK3LAKDJSL9RTIKJ';
Dest := '';
KeyLen := Length(Key);
KeyPos := 0;
SrcPos := 0;
SrcAsc := 0;
Range := 256;
if (Action = UpperCase('CRYPT')) then
begin
Randomize;
OffSet := Random(Range);
Dest := Format('%1.2x',[OffSet]);
for SrcPos := 1 to Length(Src) do
begin
Application.ProcessMessages;
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
Else if (Action = UpperCase('DECRYPT')) 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>= Length(Src));
end;
Result:= Dest;
Fim:
end;
|
| Código: |
vc usa assim :
Crypt("CRYPT", "senha12345"); //retorna senha criptografada
Crypt("DECRIPT", "ABDHAUYSGAUS37129837218");
// retorna senha original
|
para aparecer * no edit (pro usuario nao ver a senha), vc altera a propiedade passwordchar e coloca um *.
mas repito essa senha é facil de quebrar, se vc deseja mais segurança usa tipo um md5, se o usuario esquecer da senha vc cria uma loka pra ele (é assim em praticamente todos os sistemas da web)[/code] _________________ Jesus loves you! |
|
| Voltar ao Topo |
|
 |
RFG Novato

Registrado: Quarta-Feira, 18 de Mai de 2005 Mensagens: 85
|
Enviada: Qui Mai 05, 2011 7:21 pm Assunto: |
|
|
Desculpa, mais uma duvida.
Isso deve ser um evento na tabela? No post?
Obrigado.
Rildo Ferreira |
|
| Voltar ao Topo |
|
 |
rafacauly Aprendiz

Registrado: Quinta-Feira, 30 de Setembro de 2010 Mensagens: 194
|
Enviada: Qui Mai 05, 2011 7:33 pm Assunto: |
|
|
como assim?
esse código vc usa pra cria o senha encriptada ou pra pega ela de volta.
ex:
saber se a senha do usuario ta correta:
| Código: |
SQL.Add(' SELECT * FROM TABLE_USUARIO WHERE SENHA = '+QuotedStr(Crypt("CRYPT", edtSenha.text))+' AND LOGIN = ...');
Open;
if isEmpty then
//senha ou login errado
|
pegar senha de volta do cara:
| Código: |
SQL.Add(' SELECT * FROM TABLE_USUARIO WHERE LOGIN = '+QuotedStr('RFG');
Open;
senha := Crypt("DECRYPT"), fieldbyname('SENHA').asString);
|
_________________ Jesus loves you! |
|
| Voltar ao Topo |
|
 |
RFG Novato

Registrado: Quarta-Feira, 18 de Mai de 2005 Mensagens: 85
|
Enviada: Qui Mai 05, 2011 7:51 pm Assunto: |
|
|
Ok. Muito obrigado!
Rildo Ferreira |
|
| Voltar ao Topo |
|
 |
|