Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno Farina

[Resolvido] Função p/ Criptografia

Recommended Posts

E ae galera beleza?

Sou iniciante em Delphi e gostaria de saber se ja tem alguma classe, função pronta do Delphi para isto...

estou fazendo migração de um sistema em Cliper que utiliza um esquema de criptografia , no qual converte Strings para ASCII, criptografa e compara com o que tem no banco...

e estou perdido em como começar..

 

segue o que o codigo utilizado anteriormente..

 

a:=20

b:=40

usersenha := Chr(asc(tw1)+a++)+Chr(asc(tw2)+b++)+Chr(asc(tw3)+a++)+Chr(asc(tw4)+b++)+Chr(asc(tw5)+a++)+Chr(asc(tw6)+b++)

 

onde tw1, tw2... : sao os caracteres digitados no console e comparar com o que tem no banco, criptografando-o.

 

Se alguem puder me ajudar, ficarei grato

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você precisa de uma função que gere um hash identico a um já gravado no banco ou pode ser diferente? Se puder ser diferente (ou mesmo se você estiver cadastrando novas senhas) recomendo utilizar o MD5 que, apesar de recentemente terem encontrado uma falha que permita a quebra da criptografia, será necessário uma máquina muito (mas muito pontente para nossa realidade) para quebra-la.

 

Neste link tem o source de uma unit MD5 fácil de ser utilizada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

E ae cara, obrigado pelo feedback...

 

bom na verdade é pegar uma senha digitada em um TEdit que tenha o valor digitado por exe: 123456.

 

e essa função de 'criptografar' , é pegar na verdade cada um dessa STRING digitada em #$@#$$, porem, tem uma soma de pesos em cada caracter digitado.

 

Por exemplo:

 

ORD(senha[1])+20

ORD(senha[2])+40

ORD(senha[3])+21

ORD(senha[4])+41

ORD(senha[5])+22

ORD(senha[6])+42

e transformar em CHAR ou seja em simbolos....

 

tem alguma idéia de fazer algo assim? vetor? hashmap...?

obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas então, acho que ainda não entendi de fato o que precisa. Bem, com o MD5 você faz esta criptografia, por exemplo, a string SenhaDeTeste gera o Hash deb99a3c6249c3bcdd260ddcd4867d27 que é irreversível. Se precisar de um algorítmo reversível, você pode usar o algorítmo Base64

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, é que no banco os campos de senha esta em ASCII ou !E@z^#$%(símbolos), isso foi uma maneira que foi pensada anos atrás....

Devido a migração da aplicação que estou fazendo para delphi , porem o banco nao, os caracteres digitados em um TEdit, deverá converter estes caracteres digitados em simbolos...entendeu?

 

Exemplo :

 

TEdit.Text := '123456'

 

na base de dados está : E^mb#1 entendeu?

 

porem esta pseudocriptografia pega cada um dos elementos desse TEdit.text um por um, converte para codigo ASCCI e depois converte para char e valida a senha.

 

Exemplo :

 

Cod_Asc1:= ORD(senha[1])+20

Cod_Asc2:= ORD(senha[2])+40

Cod_Asc3:= ORD(senha[3])+21

Cod_Asc4:= ORD(senha[4])+41

Cod_Asc5:= ORD(senha[5])+22

Cod_Asc6:= ORD(senha[6])+42

 

Entao, se olhar para esse codigo o primeiro caractere digitado converte para codigo ASCII ,soma com 20 e converte para char , e resulta em um CHAR..

 

saca?

 

O que eu qro saber é se tem uma forma menos braçal de fazer isso.

 

Vlw

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, por considerar que você terá que manter uma compatibilidade com o sistema anterior, será braçal mesmo, o que pode ajudar são loops e tal. Crie uma function que receba o valor do TEdit e retorne a string criptografada. Compare o resultado com o valor gravado no banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, por considerar que você terá que manter uma compatibilidade com o sistema anterior, será braçal mesmo, o que pode ajudar são loops e tal. Crie uma function que receba o valor do TEdit e retorne a string criptografada. Compare o resultado com o valor gravado no banco.

Fiz de forma braçal mesmo, o ruim de fazer isso é que o código fica horrivel mas td bem, funciona pelo menos.

Muito obrigado.

 

O Post está RESOLVIDO.

 

VLW

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.