... Pague apenas R$67,00 uma única vez e tenha acesso por 1 ano aos vídeos e arquivos exemplos do site ...

Clique aqui e obtenha mais detalhes.


Criptografia com resultado binário

Quero mostrar uma utilidade prática que é a criação de um código de criptografia de nível 3.  Observe bem a função:

Public Function fncCripBin(Senha, Optional Chave As Long = 0) As String
Dim cv As Byte, comp
If Chave <> 153045 Then
   'Gerando um falso resultado, caso a chave de segurança esteja incorreta.
   fncCripBin = "101010101010110101010"
   Exit Function
End If
If Len(Senha) > 7 Then
   MsgBox "Comprimento máximo de 7 dígitos...", vbInformation, "Aviso"
   Exit Function
End If
Randomize
cv = Int((Rnd() * 126)) + 1
comp = String(7 - Len(fncDecBin(CLng(cv))), "0")
fncCripBin = fncDecBin(Oct(senha * cv)) & comp & fncDecBin(cv)
End Function

Observe que temos três criptografias embutidas na função para gerar a criptografia final.  É por isso que aqui chamo de criptografia de nível 3.  A primeira criptografia é gerar um valor OCTAL da multiplicação da senha informada (valor decimal) pela chave randômica (cv).  A chave randômica (cv) varia de 1 a 127:

Oct(Senha * cv)

Vamos supor que a senha informada seja 102030 e que o valor da chave seja 81.  Como resultado da primeira criptografia teremos:

Oct(102030*81) :::>  37415356

A segunda criptografia é a geração do valor Binário do resultado Octal.

fncDecBin(37415356) :::> 10001110101110100110111100

A chave randômica (cv) é incorporada ao código Binário final para que possamos descriptografar a senha.  Esta seria a terceira criptografia utilizada. 

fncDecBin(81) = 1010001

Como resultado final da criptografia, teremos:

fncCripBin(102030, 153045) ::::> 100011101011101001101111001010001

Observe que cada vez que rodarmos a função, com a mesma senha, podemos obter até 127 resultados diferentes de código Binário.  Exemplo:

fncCripBin(102030, 153045) :::> 110111110010011010101000010011

fncCripBin(102030, 153045) :::> 110110101101011100011001101111010

O bom nisso é que dificulta, ao extremo, qualquer tentativa de engenharia reversa.

Segue abaixo a função para descriptografar o código Binário gerado.

Public Function fncDCripBin(strBin As String, Optional Chave As Long = 0)
Dim cv
If Chave <> 153045 Then
   'Gerando um falso resultado, caso a chave de segurança esteja incorreta:
   fncDCripBin = "908070"
   Exit Function
End If
cv = fncBinDec(Right(strBin, 7))
fncDCripBin = CLng("&o" & fncBinDec(Mid(strBin, 1, Len(strBin) - 7))) / cv
End Function

Aplicando a função temos como resultado:

fncDCripBin("110110101101011100011001101111010", 153045) :::> 102030


Bom estudo!


 

 


Não há comentário

Envie seu comentário: