Ir para conteúdo

Arquivado

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

Carcleo

Criptografia em asp usando o md5

Recommended Posts

Voce copia o código e cria um arquivo com nome de md5.asp, e depois chama a função assim:

 

md5(variavel)

 

 

Observaçoes:

1_ Evite ter em seu código as variaveis que tem no md5.asp;

2_ Faça um include para o md5.asp no arquivo onde voce vai usar a função;

3 - É case sensitive, cuidado com a tecla caps look(observe no fim do aquivo)

 

md5.asp

<%' ******************' Funcion MD5 para ASP' ******************Private Const BITS_TO_A_BYTE = 8Private Const BYTES_TO_A_WORD = 4Private Const BITS_TO_A_WORD = 32Private m_lOnBits(30)Private m_l2Power(30)m_lOnBits(0) = CLng(1)m_lOnBits(1) = CLng(3)m_lOnBits(2) = CLng(7)m_lOnBits(3) = CLng(15)m_lOnBits(4) = CLng(31)m_lOnBits(5) = CLng(63)m_lOnBits(6) = CLng(127)m_lOnBits(7) = CLng(255)m_lOnBits(8) = CLng(511)m_lOnBits(9) = CLng(1023)m_lOnBits(10) = CLng(2047)m_lOnBits(11) = CLng(4095)m_lOnBits(12) = CLng(8191)m_lOnBits(13) = CLng(16383)m_lOnBits(14) = CLng(32767)m_lOnBits(15) = CLng(65535)m_lOnBits(16) = CLng(131071)m_lOnBits(17) = CLng(262143)m_lOnBits(18) = CLng(524287)m_lOnBits(19) = CLng(1048575)m_lOnBits(20) = CLng(2097151)m_lOnBits(21) = CLng(4194303)m_lOnBits(22) = CLng(8388607)m_lOnBits(23) = CLng(16777215)m_lOnBits(24) = CLng(33554431)m_lOnBits(25) = CLng(67108863)m_lOnBits(26) = CLng(134217727)m_lOnBits(27) = CLng(268435455)m_lOnBits(28) = CLng(536870911)m_lOnBits(29) = CLng(1073741823)m_lOnBits(30) = CLng(2147483647)m_l2Power(0) = CLng(1)m_l2Power(1) = CLng(2)m_l2Power(2) = CLng(4)m_l2Power(3) = CLng(8)m_l2Power(4) = CLng(16)m_l2Power(5) = CLng(32)m_l2Power(6) = CLng(64)m_l2Power(7) = CLng(128)m_l2Power(8) = CLng(256)m_l2Power(9) = CLng(512)m_l2Power(10) = CLng(1024)m_l2Power(11) = CLng(2048)m_l2Power(12) = CLng(4096)m_l2Power(13) = CLng(8192)m_l2Power(14) = CLng(16384)m_l2Power(15) = CLng(32768)m_l2Power(16) = CLng(65536)m_l2Power(17) = CLng(131072)m_l2Power(18) = CLng(262144)m_l2Power(19) = CLng(524288)m_l2Power(20) = CLng(1048576)m_l2Power(21) = CLng(2097152)m_l2Power(22) = CLng(4194304)m_l2Power(23) = CLng(8388608)m_l2Power(24) = CLng(16777216)m_l2Power(25) = CLng(33554432)m_l2Power(26) = CLng(67108864)m_l2Power(27) = CLng(134217728)m_l2Power(28) = CLng(268435456)m_l2Power(29) = CLng(536870912)m_l2Power(30) = CLng(1073741824)Private Function LShift(lValue, iShiftBits) If iShiftBits = 0 Then  LShift = lValue  Exit Function ElseIf iShiftBits = 31 Then  If lValue And 1 Then   LShift = &H80000000 Else  LShift = 0 End If  Exit Function  ElseIf iShiftBits < 0 Or iShiftBits > 31 Then  Err.Raise 6 End If If (lValue And m_l2Power(31 - iShiftBits)) Then  LShift = ((lValue And m_lOnBits(31 - (iShiftBits + 1))) * m_l2Power(iShiftBits)) Or &H80000000 Else  LShift = ((lValue And m_lOnBits(31 - iShiftBits)) * m_l2Power(iShiftBits)) End IfEnd FunctionPrivate Function RShift(lValue, iShiftBits) If iShiftBits = 0 Then  RShift = lValue  Exit Function ElseIf iShiftBits = 31 Then  If lValue And &H80000000 Then   RShift = 1  Else   RShift = 0  End If  Exit Function ElseIf iShiftBits < 0 Or iShiftBits > 31 Then  Err.Raise 6 End If RShift = (lValue And &H7FFFFFFE) \ m_l2Power(iShiftBits)  If (lValue And &H80000000) Then  RShift = (RShift Or (&H40000000 \ m_l2Power(iShiftBits - 1))) End IfEnd FunctionPrivate Function RotateLeft(lValue, iShiftBits) RotateLeft = LShift(lValue, iShiftBits) Or RShift(lValue, (32 - iShiftBits))End FunctionPrivate Function AddUnsigned(lX, lY)Dim lX4Dim lY4Dim lX8Dim lY8Dim lResultlX8 = lX And &H80000000lY8 = lY And &H80000000lX4 = lX And &H40000000lY4 = lY And &H40000000lResult = (lX And &H3FFFFFFF) + (lY And &H3FFFFFFF)If lX4 And lY4 ThenlResult = lResult Xor &H80000000 Xor lX8 Xor lY8ElseIf lX4 Or lY4 ThenIf lResult And &H40000000 ThenlResult = lResult Xor &HC0000000 Xor lX8 Xor lY8ElselResult = lResult Xor &H40000000 Xor lX8 Xor lY8End IfElselResult = lResult Xor lX8 Xor lY8End IfAddUnsigned = lResultEnd FunctionPrivate Function F(x, y, z) F = (x And y) Or ((Not x) And z)End FunctionPrivate Function G(x, y, z) G = (x And z) Or (y And (Not z))End FunctionPrivate Function H(x, y, z) H = (x Xor y Xor z)End FunctionPrivate Function I(x, y, z) I = (y Xor (x Or (Not z)))End FunctionPrivate Sub FF(a, b, c, d, x, s, ac) a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac)) a = RotateLeft(a, s) a = AddUnsigned(a, B)End SubPrivate Sub GG(a, b, c, d, x, s, ac) a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac)) a = RotateLeft(a, s) a = AddUnsigned(a, B)End SubPrivate Sub HH(a, b, c, d, x, s, ac) a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac)) a = RotateLeft(a, s) a = AddUnsigned(a, B)End SubPrivate Sub II(a, b, c, d, x, s, ac) a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac)) a = RotateLeft(a, s) a = AddUnsigned(a, B)End SubPrivate Function ConvertToWordArray(sMessage) Dim lMessageLength Dim lNumberOfWords Dim lWordArray() Dim lBytePosition Dim lByteCount Dim lWordCount  Const MODULUS_BITS = 512 Const CONGRUENT_BITS = 448  lMessageLength = Len(sMessage)  lNumberOfWords = (((lMessageLength + ((MODULUS_BITS - CONGRUENT_BITS) \ BITS_TO_A_BYTE)) \ (MODULUS_BITS \ BITS_TO_A_BYTE)) + 1) * (MODULUS_BITS \ BITS_TO_A_WORD) ReDim lWordArray(lNumberOfWords - 1)  lBytePosition = 0 lByteCount = 0 Do Until lByteCount >= lMessageLength  lWordCount = lByteCount \ BYTES_TO_A_WORD  lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE  lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(Asc(Mid(sMessage, lByteCount + 1, 1)), lBytePosition)  lByteCount = lByteCount + 1 Loop  lWordCount = lByteCount \ BYTES_TO_A_WORD lBytePosition = (lByteCount Mod BYTES_TO_A_WORD) * BITS_TO_A_BYTE  lWordArray(lWordCount) = lWordArray(lWordCount) Or LShift(&H80, lBytePosition)  lWordArray(lNumberOfWords - 2) = LShift(lMessageLength, 3) lWordArray(lNumberOfWords - 1) = RShift(lMessageLength, 29)  ConvertToWordArray = lWordArrayEnd FunctionPrivate Function WordToHex(lValue) Dim lByte Dim lCount  For lCount = 0 To 3  lByte = RShift(lValue, lCount * BITS_TO_A_BYTE) And m_lOnBits(BITS_TO_A_BYTE - 1)  WordToHex = WordToHex & Right("0" & Hex(lByte), 2) NextEnd FunctionPublic Function MD5(sMessage)Dim xDim kDim AADim BBDim CCDim DDDim aDim bDim cDim dConst S11 = 7Const S12 = 12Const S13 = 17Const S14 = 22Const S21 = 5Const S22 = 9Const S23 = 14Const S24 = 20Const S31 = 4Const S32 = 11Const S33 = 16Const S34 = 23Const S41 = 6Const S42 = 10Const S43 = 15Const S44 = 21x = ConvertToWordArray(sMessage)a = &H67452301b = &HEFCDAB89c = &H98BADCFEd = &H10325476For k = 0 To UBound(x) Step 16 AA = a BB = b CC = c DD = d  FF a, b, c, d, x(k + 0), S11, &HD76AA478 FF d, a, b, c, x(k + 1), S12, &HE8C7B756 FF c, d, a, b, x(k + 2), S13, &H242070DB FF b, c, d, a, x(k + 3), S14, &HC1BDCEEE FF a, b, c, d, x(k + 4), S11, &HF57C0FAF FF d, a, b, c, x(k + 5), S12, &H4787C62A FF c, d, a, b, x(k + 6), S13, &HA8304613 FF b, c, d, a, x(k + 7), S14, &HFD469501 FF a, b, c, d, x(k + 8), S11, &H698098D8 FF d, a, b, c, x(k + 9), S12, &H8B44F7AF FF c, d, a, b, x(k + 10), S13, &HFFFF5BB1 FF b, c, d, a, x(k + 11), S14, &H895CD7BE FF a, b, c, d, x(k + 12), S11, &H6B901122 FF d, a, b, c, x(k + 13), S12, &HFD987193 FF c, d, a, b, x(k + 14), S13, &HA679438E FF b, c, d, a, x(k + 15), S14, &H49B40821  GG a, b, c, d, x(k + 1), S21, &HF61E2562 GG d, a, b, c, x(k + 6), S22, &HC040B340 GG c, d, a, b, x(k + 11), S23, &H265E5A51 GG b, c, d, a, x(k + 0), S24, &HE9B6C7AA GG a, b, c, d, x(k + 5), S21, &HD62F105D GG d, a, b, c, x(k + 10), S22, &H2441453 GG c, d, a, b, x(k + 15), S23, &HD8A1E681 GG b, c, d, a, x(k + 4), S24, &HE7D3FBC8 GG a, b, c, d, x(k + 9), S21, &H21E1CDE6 GG d, a, b, c, x(k + 14), S22, &HC33707D6 GG c, d, a, b, x(k + 3), S23, &HF4D50D87 GG b, c, d, a, x(k + 8), S24, &H455A14ED GG a, b, c, d, x(k + 13), S21, &HA9E3E905 GG d, a, b, c, x(k + 2), S22, &HFCEFA3F8 GG c, d, a, b, x(k + 7), S23, &H676F02D9 GG b, c, d, a, x(k + 12), S24, &H8D2A4C8A  HH a, b, c, d, x(k + 5), S31, &HFFFA3942 HH d, a, b, c, x(k + 8), S32, &H8771F681 HH c, d, a, b, x(k + 11), S33, &H6D9D6122 HH b, c, d, a, x(k + 14), S34, &HFDE5380C HH a, b, c, d, x(k + 1), S31, &HA4BEEA44 HH d, a, b, c, x(k + 4), S32, &H4BDECFA9 HH c, d, a, b, x(k + 7), S33, &HF6BB4B60 HH b, c, d, a, x(k + 10), S34, &HBEBFBC70 HH a, b, c, d, x(k + 13), S31, &H289B7EC6 HH d, a, b, c, x(k + 0), S32, &HEAA127FA HH c, d, a, b, x(k + 3), S33, &HD4EF3085 HH b, c, d, a, x(k + 6), S34, &H4881D05 HH a, b, c, d, x(k + 9), S31, &HD9D4D039 HH d, a, b, c, x(k + 12), S32, &HE6DB99E5 HH c, d, a, b, x(k + 15), S33, &H1FA27CF8 HH b, c, d, a, x(k + 2), S34, &HC4AC5665  II a, b, c, d, x(k + 0), S41, &HF4292244 II d, a, b, c, x(k + 7), S42, &H432AFF97 II c, d, a, b, x(k + 14), S43, &HAB9423A7 II b, c, d, a, x(k + 5), S44, &HFC93A039 II a, b, c, d, x(k + 12), S41, &H655B59C3 II d, a, b, c, x(k + 3), S42, &H8F0CCC92 II c, d, a, b, x(k + 10), S43, &HFFEFF47D II b, c, d, a, x(k + 1), S44, &H85845DD1 II a, b, c, d, x(k + 8), S41, &H6FA87E4F II d, a, b, c, x(k + 15), S42, &HFE2CE6E0 II c, d, a, b, x(k + 6), S43, &HA3014314 II b, c, d, a, x(k + 13), S44, &H4E0811A1 II a, b, c, d, x(k + 4), S41, &HF7537E82 II d, a, b, c, x(k + 11), S42, &HBD3AF235 II c, d, a, b, x(k + 2), S43, &H2AD7D2BB II b, c, d, a, x(k + 9), S44, &HEB86D391  a = AddUnsigned(a, AA) b = AddUnsigned(b, BB) c = AddUnsigned(c, CC) d = AddUnsigned(d, DD)NextMD5 = LCase(WordToHex(a) & WordToHex(B) & WordToHex(c) & WordToHex(d))End Function%>

Criptografia em asp usando o md5.

Compartilhar este post


Link para o post
Compartilhar em outros sites

estas primeiras linhas -

Private Const BITS_TO_A_BYTE = 8Private Const BYTES_TO_A_WORD = 4Private Const BITS_TO_A_WORD = 32

pra que servem ???

isto é... posso alterar algum destes valores pra tornar o script "personalizado" ou isso não é necessário ?? se alguém souber que eu estou usando este código, pode vir a descriptografar meus dados? com facilidade ?

 

Obrigado pela atenção.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você mostrou como se faz a criptografia, agora eu preciso fazer a descriptografia! Como eu faço? Alguém sabe?

<{POST_SNAPBACK}>

pelo que eu sei sobre o MD5 dessa forma nao e possivel desfazer ess tipo de criptografia, na verdade isso e um rash(acho q e assim q escreve), tipo ele tranforma qualquer valor em 32 caracteres.

 

a = "somente um teste"

tipo = MD5(a)

response.write(tipo) ' na tela viria 32 caracteres, nao estou com o exemplo aki para mostrar como ficaria.

 

idependente do tamanho do texto ou qualquer outra informacao ele vai fazer transformar em um rash de 32 caracteres...

Compartilhar este post


Link para o post
Compartilhar em outros sites

resultado

 

so um teste

 

493b617f0a18629a855250144b03097d

 

Existe Possibilidade de descriptografar, para utilizar na alteração dos dados?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho esse exemplo aqui.... eu uso ele com frequencia no meu sistema, ele cripta e descripta, eu gostaria de saber se ele é seguro.

 

Att;

Rhael

 

<%Const EncC1 = 109Const EncC2 = 191Const EncKey = 161Public 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 = TempResultEnd FunctionPublic 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 = TempResultEnd FunctionPrivate Function AuxShr(Numero, BShr)AuxShr = Int(Numero / (2 ^ BShr))End FunctionVarStr = "Teste de Cripto"VarTeste = EncriptaStr(VarStr)Response.Write _VarTeste & "<br>" & _DecriptaStr(VarTeste)%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, md5 é irreversível. e assim deve ser. por uma razão muito simples. imagine que você cadastre uma senha pra entrar aki no forum. entao um hacker rouba o banco de dados do site. mesmo assim ele nao terá sua senha, pq na verdade o que é salvo é o rash da senha, ou pelo menos deveria ser.você poderia perguntar, se nao guardam a senha como sabem se ela está certa quando eu volto no site?quando você digita, o site gera novamente o rash, se o rash gerado é igual ao rash salvo, entao a senha está certa.é por isso q dizem nos bancos que você é o único que sabe sua senha, nem o funcionario. é pq eles nao a armazenam, armazenam é o rash.e o rash é projetado para que nao ocorra colisoes. colisoes sao 2 palavras que gerem o mesmo rash. pelo que se sabe um rash é único para cada sequencia de caracteres.o rash tambem é usado para testar autenticidade de arquivos. por exemplo, você inicia um download. entao o pc servidor envia o rash do arquivo salvo. se ao concluir o download, quando o seu pc gerar um rash e ele for diferente do rash enviado, entao o download se corrompeu no caminho.

Compartilhar este post


Link para o post
Compartilhar em outros sites

antes de fazer a consulta no banco, você criptografa em MD5 a variavel do formulário...se os dados forem iguais então acessa a página

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe a pergunta, mais é que não entendi NA PRÁTICA como eu encripto minhas páginas !!!!-EU já copiei o código e salvei como md5.asp, agora como eu faço para que ele encripte as páginas ?-Eu vi tb que tem que fazer um #include do mp5.asp nas minhas páginas, o mp5.asp então tem que estar junto dos meus arquivo (agora faz parte) ?-Tambem não entendi pq usar o código ' MP5(variavel) ' , onde está variavel, eu coloco todo o conteudo da minha página ???Fico muito grato por qualquer ajuda !!!!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve...Thiago, o MD5 você não vai utilizar para criptografa e proteger o código fonte de seus arquivos, e sim variáveis como senhas, dados de cartão, cpf, rg, etc.. entendeu??Assim, ao armazenar a senha no bd, por exemplo, é salvo como um rash de 32 carac....Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho esse exemplo aqui.... eu uso ele com frequencia no meu sistema, ele cripta e descripta, eu gostaria de saber se ele é seguro.Att;Rhael

<%Const EncC1 = 109Const EncC2 = 191Const EncKey = 161Public 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 = TempResultEnd FunctionPublic 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 = TempResultEnd FunctionPrivate Function AuxShr(Numero, BShr)AuxShr = Int(Numero / (2 ^ BShr))End FunctionVarStr = "Teste de Cripto"VarTeste = EncriptaStr(VarStr)Response.Write _VarTeste & "<br>" & _DecriptaStr(VarTeste)%>
Soh para avisar que fui utililzar esse codigo mas houve um problema ele criptografou beleza...mas eh para um querystring então deu um erro de Bad Request (Invalid URL) o caracter eh '' flw..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Soh para avisar que fui utililzar esse codigo mas houve um problema ele criptografou beleza...mas eh para um querystring então deu um erro de Bad Request (Invalid URL) o caracter eh '' flw..

Foi exatamente este o meu problema!!! Será q é possível alterar esta função para que não gere estes caracteres bizarros???? Se alguem já fez isso por favor poste!!!!Estou vendo o q posso fazer... se conseguir algo eu posto aki.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso...queria uma forma de que ninguem conseguisse visualizar os fontes dos arquivos do site....nem via web, baixando os arquivos, nem para quem eu comercializar um produto. Existe? como?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso...queria uma forma de que ninguem conseguisse visualizar os fontes dos arquivos do site....nem via web, baixando os arquivos, nem para quem eu comercializar um produto. Existe? como?

Eu acredito que dessa forma não existe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tbm nunca vi não, creio que você pode, mais acho que vai mudar muita coisa, nunca vi isso, ainda estou em duvida realmente se pode ou não!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza...muito obrigado...

 

agora uma outra dúvida,

 

Se tratando do script MD5 para a gravação de senhas no BD na qual não tem como retornar ao original...como os sites por ai fazem para ter a opção "Esqueci email" que envia no seu email a sua senha?

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.