GERENCIAMENTO DE SENHAS NO CLIPPER
Moderador: Moderadores
-
vagner_cip
- Usuário Nível 1

- Mensagens: 30
- Registrado em: 05 Out 2004 14:07
GERENCIAMENTO DE SENHAS NO CLIPPER
Olá a todos
Estou com problemas com gerenciamento de senhas, tenho um conjunto de sistemas de utiliza um gerenciados de senhas criado em dbf, mas as senhas são vísiveis a qualquer um que abrir o banco, gostaria de saber se alguem tem uma idéia de como eu posso proteger este banco ou desenvolver outro mais seguro.
Eu pensei em usar a mesma senha do windows para logar no prog mas não sei como fazer isso.
alguém pode me dar uma luz.
Muito grato.
Estou com problemas com gerenciamento de senhas, tenho um conjunto de sistemas de utiliza um gerenciados de senhas criado em dbf, mas as senhas são vísiveis a qualquer um que abrir o banco, gostaria de saber se alguem tem uma idéia de como eu posso proteger este banco ou desenvolver outro mais seguro.
Eu pensei em usar a mesma senha do windows para logar no prog mas não sei como fazer isso.
alguém pode me dar uma luz.
Muito grato.
A bem da verdade, não se costuma armazenar senha. O usual é que você some as strings scorrespondentes ao nome e senha, calcule seu hash (pode ser MD5 - o mais usual nessa área) e armazene a string resultante. Ao obter o log-in, repete-se o processo e compara-se o resultado com o hash armazenado.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
Voce pode criptografar os campos que contenham as senhas.
Existem muitas ferramentas para isso. Uma delas é a função Crypt() da CaTools,
existe também uma função do nosso amigo Maligno CRC32().
Só para exemplificar:
Em xHarbour fiz uma rotina que pega a senha digitada pelo usuario e criptografa com a função HB_MD5(), ficou o bicho !!!
Ah claro, se o problema é na hora de digitar, use a clausula 'Password" nos get´s, que ela mostra asteriscos na digitação.
Existem muitas ferramentas para isso. Uma delas é a função Crypt() da CaTools,
existe também uma função do nosso amigo Maligno CRC32().
Só para exemplificar:
Em xHarbour fiz uma rotina que pega a senha digitada pelo usuario e criptografa com a função HB_MD5(), ficou o bicho !!!
Ah claro, se o problema é na hora de digitar, use a clausula 'Password" nos get´s, que ela mostra asteriscos na digitação.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
MySQL c/ SQLRDD
HwGui + GTWVG
-
vagner_cip
- Usuário Nível 1

- Mensagens: 30
- Registrado em: 05 Out 2004 14:07
CRC32 é outro hash. Não é muito utilizado pra isso.alaminojunior escreveu:Voce pode criptografar os campos que contenham as senhas. Existem muitas ferramentas para isso. Uma delas é a função Crypt() da CaTools, existe também uma função do nosso amigo Maligno CRC32().
É isso. Exatamente o que eu disse. Armazena-se o hash e mais nada. No log-in, é só repetir o cálculo e comparar com o hash gravado. Simples de tudo.Só para exemplificar:
Em xHarbour fiz uma rotina que pega a senha digitada pelo usuario e criptografa com a função HB_MD5(), ficou o bicho !!!
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
-
vagner_cip
- Usuário Nível 1

- Mensagens: 30
- Registrado em: 05 Out 2004 14:07
Re: Senhas
Exemplo simples: você tem o nome de log-in na variável cName e a senha na variável cPass. Calcule o hash MD5 para a string que soma essas variáveis: cHash = CalcMD5(cName+cPass). Essa variável cHash conterá algo como "00C91E8CA42D4E240B4207F0CB5CBE27", que é uma string típica do MD5. Armazene isso. No que o usuário fizer o log-in novamente, repita o processo e compare a string desse hash com a string que você armazenou. Detalhe: letras maiúsculas e minúsculas fazem diferença no cálculo do hash.vagner_cip escreveu:não entendi nada ?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Re: crc32()
No link http://pub.buzinello.com/index.php?d=./ ... r/sources/ você tem o CRC32. Mas ele não é o que se recomanda para esse tipo de serviço, pois é um algoritmo considerado muito fraco pra isso.vagner_cip escreveu:onde posso conseguir esta função crc32()
No link http://pub.buzinello.com/index.php?d=./ ... pper/libs/ você tem o arquivo MD5.ZIP. Ele é melhor pra isso. No ZIP tem tudo explicado.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.
---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
-
vagner_cip
- Usuário Nível 1

- Mensagens: 30
- Registrado em: 05 Out 2004 14:07
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
- jairfab
- Usuário Nível 3

- Mensagens: 252
- Registrado em: 21 Mai 2007 09:43
- Localização: São Paulo, Região Leste - Suzano
Encript ficaria mais ou menos assim
Function ENCRYPT(Arg1, Arg2, Arg3) /// Cryptografa texto
Local Local1, Local2
Local1:= ""
Arg3:= IIf(ValType(Arg3) == ValType(120) .AND. Arg3 != Nil, Arg3, ;
120)
Arg2:= IIf(ValType(Arg2) == ValType(.F.) .AND. Arg2 != Nil, Arg2, ;
.F.)
If (ValType(Arg1) = "C")
If (Arg2)
For Local2:= Len(Arg1) To 1 Step -1
Local1:= Local1 + Chr(Asc(SubStr(Arg1, Local2, 1)) + Arg3)
Next
Else
For Local2:= 1 To Len(Arg1)
Local1:= Local1 + Chr(Asc(SubStr(Arg1, Local2, 1)) + Arg3)
Next
EndIf
EndIf
Return Local1
Para Gravar no banco de Dados:
Replace SENHA with Encrypt(WSENHA)
Replace ACESSOS with Encrypt(WACESSOS)
Function ENCRYPT(Arg1, Arg2, Arg3) /// Cryptografa texto
Local Local1, Local2
Local1:= ""
Arg3:= IIf(ValType(Arg3) == ValType(120) .AND. Arg3 != Nil, Arg3, ;
120)
Arg2:= IIf(ValType(Arg2) == ValType(.F.) .AND. Arg2 != Nil, Arg2, ;
.F.)
If (ValType(Arg1) = "C")
If (Arg2)
For Local2:= Len(Arg1) To 1 Step -1
Local1:= Local1 + Chr(Asc(SubStr(Arg1, Local2, 1)) + Arg3)
Next
Else
For Local2:= 1 To Len(Arg1)
Local1:= Local1 + Chr(Asc(SubStr(Arg1, Local2, 1)) + Arg3)
Next
EndIf
EndIf
Return Local1
Para Gravar no banco de Dados:
Replace SENHA with Encrypt(WSENHA)
Replace ACESSOS with Encrypt(WACESSOS)
- jairfab
- Usuário Nível 3

- Mensagens: 252
- Registrado em: 21 Mai 2007 09:43
- Localização: São Paulo, Região Leste - Suzano
********************************
Function DECRYPT(Arg1, Arg2, Arg3) /// Descriptografa texto
Local Local1, Local2, Local3
Local1:= ""
Local2:= 0
Arg3:= IIf(ValType(Arg3) == ValType(120) .AND. Arg3 != Nil, Arg3, ;
120)
Arg2:= IIf(ValType(Arg2) == ValType(.F.) .AND. Arg2 != Nil, Arg2, ;
.F.)
Arg3:= IIf(Arg3 > 128, Arg3 % 128, Arg3)
If (ValType(Arg1) = "C")
If (Arg2)
For Local3:= Len(Arg1) To 1 Step -1
Local1:= Local1 + Chr(Asc(SubStr(Arg1, Local3, 1)) - Arg3)
Next
Else
For Local3:= 1 To Len(Arg1)
Local1:= Local1 + Chr(Asc(SubStr(Arg1, Local3, 1)) - Arg3)
Next
EndIf
EndIf
Return Local1
Function DECRYPT(Arg1, Arg2, Arg3) /// Descriptografa texto
Local Local1, Local2, Local3
Local1:= ""
Local2:= 0
Arg3:= IIf(ValType(Arg3) == ValType(120) .AND. Arg3 != Nil, Arg3, ;
120)
Arg2:= IIf(ValType(Arg2) == ValType(.F.) .AND. Arg2 != Nil, Arg2, ;
.F.)
Arg3:= IIf(Arg3 > 128, Arg3 % 128, Arg3)
If (ValType(Arg1) = "C")
If (Arg2)
For Local3:= Len(Arg1) To 1 Step -1
Local1:= Local1 + Chr(Asc(SubStr(Arg1, Local3, 1)) - Arg3)
Next
Else
For Local3:= 1 To Len(Arg1)
Local1:= Local1 + Chr(Asc(SubStr(Arg1, Local3, 1)) - Arg3)
Next
EndIf
EndIf
Return Local1
