Array
(
)

Senha com criptografia

Andremfa
   - 08 nov 2007

Ola
Bom ja faz um tempo e um amigo aqui mesmo do forum me passou um codigo de criptografia com senha o codigo funcionaou mas na hora de gravar a senha no banco de dados apreceu o erro de string truncada aqueles erros todos. Abaixo esta o codigo da criptografia se alguem me passar uma explicacao ou ate mesmo quem postou o codigo antes....
agradeco, se tiver outra maneira de utilzar uma criptografia para ficar mais segura a aplicacao.

var md5: md5cryptoserviceprovider;
pass, criptopass: array of byte;
I: Integer;
begin
try
md5:= md5cryptoserviceprovider.create;
SetLength(pass,senha.Length);
for I:= 0 to Length(pass)-1 do
begin
pass[i]:= ord(senha.Chars[i]);
end;
criptopass:=md5.computehash(pass);
senha:=´´;
for i:=0 to Length(criptopass)-1 do
begin
senha:=Senha+Char(criptopass[i]);
end;
Result:=Senha;
finally
end;


Knight_of_wine
   - 12 nov 2007

Cara apareceu string truncada, por que o seu campo de senha no BD, é muito pequeno para a string criptografada.

Você deve criar seu campo senha com mais de 20 caracteres pelo menos.


Andremfa
   - 12 nov 2007


Citação:
Cara apareceu string truncada, por que o seu campo de senha no BD, é muito pequeno para a string criptografada.

Você deve criar seu campo senha com mais de 20 caracteres pelo menos.


Legal cara acho que nao tinha entendido essa criptografia... esqueci desse detalhe importantissimo de string truncada mesmo .Voce pode me explicar um pouco esse codigo??
Obrigado


Knight_of_wine
   - 13 nov 2007


Citação:

Citação:
Cara apareceu string truncada, por que o seu campo de senha no BD, é muito pequeno para a string criptografada.

Você deve criar seu campo senha com mais de 20 caracteres pelo menos.


Legal cara acho que nao tinha entendido essa criptografia... esqueci desse detalhe importantissimo de string truncada mesmo .Voce pode me explicar um pouco esse codigo??
Obrigado


É simples, primeiro você instancia o md5CryptoServiceProvider, que é o responsável por criptografar a senha.

Depois deve setar o seu tamanho para o tamanho da string digitada no textBox.

Então você faz um laço for e coloca os caracteres um a um no array.

Esse array é o parâmetro para função que vai fazer o hash e criptografar a senha, que retorna um outro array.

No final é só você varrer o array com a senha criptografada e coloar caracter por caracter em uma string, que pode ser usada como parâmetro, para comparar com o que tá no banco ou para incluir.


Andremfa
   - 15 nov 2007


Citação:

Citação:

Citação:
Cara apareceu string truncada, por que o seu campo de senha no BD, é muito pequeno para a string criptografada.

Você deve criar seu campo senha com mais de 20 caracteres pelo menos.


Legal cara acho que nao tinha entendido essa criptografia... esqueci desse detalhe importantissimo de string truncada mesmo .Voce pode me explicar um pouco esse codigo??
Obrigado


É simples, primeiro você instancia o md5CryptoServiceProvider, que é o responsável por criptografar a senha.

Depois deve setar o seu tamanho para o tamanho da string digitada no textBox.

Então você faz um laço for e coloca os caracteres um a um no array.

Esse array é o parâmetro para função que vai fazer o hash e criptografar a senha, que retorna um outro array.

No final é só você varrer o array com a senha criptografada e coloar caracter por caracter em uma string, que pode ser usada como parâmetro, para comparar com o que tá no banco ou para incluir.


Bom ficouelhor agora obrigado mas qual a grande vantagem desse código e batante funcional ate que ponto sua seguranca nessa criptografia é segura??
Obrigado


Knight_of_wine
   - 16 nov 2007

Aqui você pode tirar um pouco das suas dúvidas sobre o md5.

http://pt.wikipedia.org/wiki/MD5


Andremfa
   - 17 nov 2007


Citação:
Aqui você pode tirar um pouco das suas dúvidas sobre o md5.

http://pt.wikipedia.org/wiki/MD5


Interessante mas esse codigo que que usei na gravacao da senha no banco de dados nao teria que haver uma programcacao tb com hash na hora do usuario logar na aplicacao ou nao precisaria???
Obrigado


Ara.es
   - 17 nov 2007

ola andremfa, vc realmente precisaria ter que programar quando o usuario for logar... como o hash ´nao tem volta´ o que vc tem que fazer é: primeiro seria bom que o codigo para transformas em has fosse uma funcao, ai quando o usuario digitar a senha vc criptografa ela com o hash e compara com o que está salvo no banco.. ai saberia se está correta ou não..


Andremfa
   - 17 nov 2007


Citação:
ola andremfa, vc realmente precisaria ter que programar quando o usuario for logar... como o hash ´nao tem volta´ o que vc tem que fazer é: primeiro seria bom que o codigo para transformas em has fosse uma funcao, ai quando o usuario digitar a senha vc criptografa ela com o hash e compara com o que está salvo no banco.. ai saberia se está correta ou não..

Ok entendi pelo que vc me disse teria que mudar esse codigo para funcao ou poderia comparar utilizando o mesmo ou nao???
Obrigado


Knight_of_wine
   - 17 nov 2007

Não precisa mudar o código!

O que eu fiz é justamente isso!

Eu criptografo a senha e jogo ela numa string!

Com isso você pode fazer a duas opções!

1- Gravar no banco usando a string como parâmetro.

#Código

SELECT * FROM USERS WHERE SENHA = result da função


2- Comparar com a String que foi gravada no banco, usando a string como parâmetros.

#Código
INSERT INTO USUARIOS
(USUARIO, SENHA)
VALUES
(usuario,result da função)


Você vai sempre gravar a senha criptografada.

E vai cirptografá-la na hora de comparar também.




Knight_of_wine
   - 17 nov 2007

Opa inverti os códigos.

Desculpe.


Andremfa
   - 18 nov 2007


Citação:
Opa inverti os códigos.

Desculpe.

Blz Knight_of_Wine esse uso no bdpCommand no caso pq minha consulta esta la... dae utilizo essa funcao que vc passou e por ai mesmo....


Knight_of_wine
   - 19 nov 2007

Isso, é só jogar o resultado da Função na string, atribuir ela ao parâmetro senha e tá zero! ;)