PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 25 → WX - Criptografia for Boller
WX - Criptografia for Boller
Débuté par BOLLER, 06 déc. 2016 15:15 - 3 réponses
Membre enregistré
3 663 messages
Popularité : +175 (223 votes)
Posté le 06 décembre 2016 - 15:15
Prezados,

Para quem gosta de trabalhar com criptografia e gosta de por um tempero todo especial só seu, só pra complicar um pouco, segue 3 funções interessantes que eu fiz para meu uso próprio.

Função IntegerToString = converte inteiros ASCII em caractères
----------------------------------------------------------------------
Procedure IntegerToString(Texto)

//Texto = "065100114105097110111032066111108108101114"

sNovoTexto, sNovo is string = ""

IF Texto <> "" THEN

nTotal is int = Length(Texto) / 3

nPos is int = 1

LOOP (nTotal)

sNovo = Middle(Texto, nPos, 3)

sNovoTexto += Charact( sNovo )

nPos += 3

END

END

//sNovoTexto = "Adriano Boller"

RESULT sNovoTexto




//Função StringToInteger = converte a string em numeros ascii
----------------------------------------------------------------------
Procedure StringToInteger(Texto)

//Texto = "Adriano Boller"

sNovoTexto is string = ""

IF Texto <> "" THEN

nTotal is int = Length(Texto)

nPos is int = 0

LOOP (nTotal)

nPos += 1

sNovoTexto += NumToString( Asc( Middle(Texto, nPos, 1) ), "03.00f" )

//A = 065

//d = 100...

END

END

//sNovoTexto = "065100114105097110111032066111108108101114"

RESULT sNovoTexto




//Função InvertString = Inverte a string de traz para frente e vice e versa
-----------------------------------------------------------------------------------------
Procedure InvertString(Texto)

//Texto = "Adriano"

sNovoTexto is string = ""

IF Texto <> "" THEN

nTotal is int = Length(Texto)
nPos is int = nTotal

LOOP (nTotal)

sNovoTexto += Middle(Texto,nPos,1)

nPos -= 1

END

END

//sNovoTexto = "onairdA"

RESULT sNovoTexto


Bons estudos

: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/
Message modifié, 06 décembre 2016 - 15:17
Membre enregistré
3 663 messages
Popularité : +175 (223 votes)
Posté le 16 janvier 2017 - 15:18
Procedure CriptografiaBoller(Texto, CD)

IF Texto <> "" AND CD = "C"

Texto = StringToInteger(Texto)

Texto = InvertString(Texto)

Texto = Crypt(Texto, "TESTE", cryptRC516+compressLZW, encodeBASE64)

ELSE IF Texto <> "" AND CD = "D"

Texto = Uncrypt(Texto, "TESTE", cryptRC516+compressLZW, encodeBASE64)

Texto = InvertString(Texto)

Texto = IntegerToString(Texto)

ELSE

Info("Nenhum valor informado na senha!")

END

RESULT Texto


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
3 663 messages
Popularité : +175 (223 votes)
Posté le 16 janvier 2017 - 15:26
MODO DE USAR

Botao01:
Info(SET_Criptografia.CriptografiaBoller("SUPERVISOR","C"))



Botao02:
Info(SET_Criptografia.CriptografiaBoller("DKiEnwDpmHEcVHh1nF5lkTwOlo5CVT/OfIbaiod6qLiLLorveqEqn2PFIMk=","D"))


É possível que a cada processo seja colocado uma senha diferente, fazendo diversas camadas como fosse uma cebola que para entrar em cada camada tem que conhecer outro código, podendo vir via sms ou em uma tabela também com dados criptografados.

Nos dias de hoje devemos proteger os dados com diferentes técnicas e camadas de segurança e o acesso deve ser monitorado e assistido.

E ainda assim pode ocorrer vazamentos de informação, ou seja todo cuidado é pouco, use a criatividade e melhore o código sugerido.

Aguardo por novos exemplos sobre esse assunto.

: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/
Membre enregistré
3 663 messages
Popularité : +175 (223 votes)
Posté le 04 avril 2017 - 04:16
Prezados,

No caso de sistemas operacioanis diferentes use o Cryptstandart/Uncryptstandart e se for transmitir usando XML ou json e nao pode ter o caracter < > { } para ficar integro use a tecnica a cima. Lembrando que o Enter ou final de linha nos sistemas operacionais sao diferentes:

Windows = CRLF

Linux = CR

Mac = LF

Portanto use essa nova função:

CRIPTAR
sMessage is Buffer = "Message to encrypt"
bufKey is Buffer = HashString(HA_CKSUM_64, "password")
bufEncrypt is Buffer = CryptStandard(sMessage, bufKey, cryptDES)
Info(bufEncrypt )


DESCRIPTAR
// Decryption
sResult is Buffer = UncryptStandard(bufEncrypt, bufKey, cryptDES)
Info(sResult)



CRIPTAR QUE NEM O BOLLER
sMessage is Buffer = "Message to encrypt"
bufKey is Buffer = HashString(HA_CKSUM_64, "password")
bufEncrypt is Buffer = CryptStandard(sMessage, bufKey, cryptDES)
sResult = STRINGTOINTEGER(bufEncrypt )
Info(bufEncrypt )


DESCRIPTAR QUE NEM O BOLLER
// Decryption
sResult is Buffer = UncryptStandard(bufEncrypt, bufKey, cryptDES)
sResult = INTEGERTOSTRING(sResult)
Info(sResult)



Lembro que a tecnica cryptDES só aceita HA_CKSUM_64.

Maiores detalhes no Help.

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