Ir para conteúdo

POWERED BY:

Arquivado

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

silas_i

Explicação

Recommended Posts

Oi pessoal peguei um código de criptografia na internet. Ele funciona bem.. eu só queria entender como funciona...

 

ASP [/tr][tr]

<%

Const EncC1 = 109

Const EncC2 = 191

Const EncKey = 161

 

Public Function EncriptaStr(Texto)

Dim TempStr, TempResult, TempNum, TempChar

Dim TempKey

Dim i

 

TempStr = Texto

TempResult = ""

TempKey = ((EncKey * EncC1) + EncC2) Mod 65536

 

For i = 1 To Len(TempStr)

TempNum = (Asc(Mid(TempStr, i, 1)) Xor (AuxShr(TempKey, 8))) Mod 256

TempChar = Chr(TempNum)

TempKey = (((Asc(TempChar) + TempKey) * EncC1) + EncC2) Mod 65536

TempResult = TempResult & TempChar

Next

 

EncriptaStr = TempResult

End Function

%>

<%

Public Function DecriptaStr(Texto)

Dim TempStr, TempResult, TempNum, TempChar

Dim TempKey

Dim i

 

TempStr = Texto

TempResult = ""

TempKey = ((EncKey * EncC1) + EncC2) Mod 65536

 

For i = 1 To Len(TempStr)

TempNum = (Asc(Mid(TempStr, i, 1)) Xor (AuxShr(TempKey, 8))) Mod 256

TempChar = Chr(TempNum)

TempKey = (((Asc(Mid(TempStr, i, 1)) + TempKey) * EncC1) + EncC2) Mod 65536

TempResult = TempResult & TempChar

Next

 

DecriptaStr = TempResult

End Function

 

Private Function AuxShr(Numero, BShr)

AuxShr = Int(Numero / (2 ^ BShr))

End Function

%>

[/tr]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não há muito o que entender: voce determina 1 número como chave e 2 números como variaveis ; no tempStr está o texto que deve ser encriptado; no tempKey a formula de encirptação a ser aplicada em cada letra no tempStr ; o AuxShr é outra formula para aumentar a codificação e depois é só fazer um loop em cada plavra no texto e mostrar or esultado;.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

bom.. naum sei o q você quer de explicação e tal... tipo da pra "entender" a lógica do carinha q fez... mas ai vai...

ASP [/tr][tr]

'---gera o codigo de criptografia baseado nas chaves q ele definiu...

'---da função MOD você conhece ne... resto da divisão...

TempKey = ((EncKey * EncC1) + EncC2) Mod 65536

 

'---vai pegando caracter por caracter e vai criptografando 1 por 1

For i = 1 To Len(TempStr)

 

'---ele usa o código ASCII de cada caracter do texto q você manda e faz um

'---XOR com o resultado de Int(TEMPKEY / (2 ^ 8)) e depois usa o MOD novamente...

'---o XOR você deve conhecer... comparação de bit a bit sendo, um OR EXCLUSIVO.. ou seja, somente vai ser um valor 1 qdo somente um dos 2 bits for 1, caso contrário, será 0...

TempNum = (Asc(Mid(TempStr, i, 1)) Xor (AuxShr(TempKey, 8))) Mod 256

 

'---transforma o código gerado (q nunca vai ser maior q 256 devido ao MOD) em um caracter da tabela ASCII

TempChar = Chr(TempNum)

 

'---aki ele gera um novo valor para a CHAVE de CRIPTOGRAFIA baseado no último caractere... dessa forma cada caracter vai ter uma chave... por exemplo, se você criptografar um texto com caracteres iguais, provavelmente ele naum vai dar cadacteres iguais... como tentar criptografar um texto com os caracteres "AAAAA" ele naum vai dar em sequencia como a maioria das criptografias... tipo "ffffff" e sim algo do tipo "fRe#%"

'----um cuidado q tem q ser tomado, seria caso você armazene esse valor na base de dados, textos com a ASPAS simples ocasionariam erros e eles podem aparecer pq o resultado armazenado eh sempre em ASCII... ai teria q tratar de forma q na DESCRIPTOGRAFIA naum ocorram erros tb...

TempKey = (((Asc(TempChar) + TempKey) * EncC1) + EncC2) Mod 65536

 

'---concatena os resultados depois repassa qdo terminar para o user...

TempResult = TempResult & TempChar

Next

[/tr]

 

qto a descriptografia nem vi.. mas 99% das técnicas de critpografia utiliza-se do processo inverso, exceto qdo usa a lógica de chave publica e privada(esqueci o nome.. hehe)... mas naum eh nesse caso...

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.