PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 25 → Senha Criptografada - Webservice
Senha Criptografada - Webservice
Débuté par Marco Machado, 28 jan. 2016 01:23 - 7 réponses
Membre enregistré
7 messages
Popularité : +3 (3 votes)
Posté le 28 janvier 2016 - 01:23
Dica para quem precisa usar Senha Criptografada.
Um dos maiores usos que faço disso é no consumo de WebServices, onde necessitamos passar como parâmetros para autenticação, o usuário e a senha.

Esta necessidade surgiu dos códigos de exemplo que temos disponíveis quando vamos trabalhar com WebServices. Sempre temos Java ou C#.

Para facilitar a vida, vamos dispor dos código em Java, C# e Windev ( ainda poderíamos fazer os mesmo código usando C# dentro do Windev)

Código JAVA:

String senha = "1234" ;

java.security.MessageDigest md = java.security.MessageDigest.getInstance("SHA");
md.update(senha.getBytes());
String senhaSHA = new String(org.apache.commons.codec.binary.Base64.encodeBase64(md.digest()));

Código C#:

var sha1 = SHA1Managed.Create();
byte[] inputBytes = Encoding.ASCII.GetBytes(input);
byte[] outputBytes = sha1.ComputeHash(inputBytes);
return BitConverter.ToString(outputBytes).Replace("-", "").ToLower();

Código Windev:

SenhaBase is string = "1234"
rhash is string = HashString(HA_SHA_160,SenhaBase)
res is string = Crypt(rhash,"",cryptNone,encodeBASE64)

Info(res)

O código nas 3 linguagens tem que produzir o seguinte resultado:

cRDtpNCeBiql5KOQsKVyrA0sAiA=

Portando:

SenhaBase = "1234" <=> cRDtpNCeBiql5KOQsKVyrA0sAiA=

Isso é extremamente útil quando trabalhamos com Webservices, como já falamos, ou quando simplesmente queremos colocar um resultado em arquivo texto e não queremos que ele fique aberto.

Referências:

HashString
http://doc.windev.com/en-US/…
Crypt
http://doc.windev.com/…
Posté le 28 janvier 2016 - 12:18
Como que faz para decriptografar a senha para obter o valor 1234 a partir do valor cRDtpNCeBiql5KOQsKVyrA0sAiA=

?
Membre enregistré
7 messages
Popularité : +3 (3 votes)
Posté le 30 janvier 2016 - 16:53
André, você pode usar a função Uncrypt no help
http://doc.pcsoft.fr/en-US/?3024035&product=WD&productversion=XXF150063J
Posté le 05 février 2016 - 02:22
Muito bom post.

Obrigado por partilhar.

JJM
Posté le 05 février 2016 - 12:02
Não deu certo, a função Uncrypt não volta ao valor original depois de aplicar a função HashString.

SenhaBase is string = EDT_Senha //1234

EDT_hash = HashString(HA_SHA_160,SenhaBase)
//resultado: qν¤Πž*¥δ£°¥r¬

EDT_Senha_encriptada = Crypt(EDT_hash,"",cryptNone,encodeBASE64)
//resultado: cRDtpNCeBiql5KOQsKVyrA0sAiA=

EDT_dehash = Uncrypt(EDT_Senha_encriptada,"",cryptNone,encodeBASE64)
//resultado: qν¤Πž*¥δ£°¥r¬

EDT_Senha_decriptada = Uncrypt(EDT_Senha_encriptada,"",cryptNone,encodeBASE64)
//resultado: qν¤Πž*¥δ£°¥r¬
Posté le 03 mars 2016 - 18:02
Hola. El resultado si es correcto.

EDT_hash = HashString(HA_SHA_160,SenhaBase)
//resultado: qν¤Πž*¥δ£°¥r¬

EDT_Senha_encriptada = Crypt(EDT_hash,"",cryptNone,encodeBASE64)
//resultado: cRDtpNCeBiql5KOQsKVyrA0sAiA=

EDT_dehash = Uncrypt(EDT_Senha_encriptada,"",cryptNone,encodeBASE64)
//resultado: qν¤Πž*¥δ£°¥r¬

Hasta aqui son iguales. Lo que ocurre es que hashString solo genera una "huella" de la clave. No es un valor encriptado de la clave. No es posible recuperar la clave original a partir de esa "huella". Sin embargo si puede "compararse" la "huella" que se envia y recibe y ver si esa "huella" es correcta.

Rubén
Membre enregistré
44 messages
Popularité : +7 (7 votes)
Posté le 02 juin 2016 - 01:59
Parabéns, Marcos!

Isto aqui -> HA_SHA_160 <- fez a diferença no meu código!!!

--
Analista de Sistemas Jr
Assessor de Comunicação
Fotografo nas horas Vagas
Pai da Alícia e Marido da Andréa <3
Membre enregistré
3 657 messages
Popularité : +175 (223 votes)
Posté le 04 juin 2016 - 00:10
:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/