Encriptar y desencriptar cadena de texto con ASP clásico

Código ASP clásico

Este artículo te enseñará cómo crear el cifrado de cadena simple a partir de una página ASP, pero no del tipo que podría meterse en problemas con. No se deje engañar si el cifrado de cadena que te voy a mostrar es trabajo pesado lo suficiente como para tomar algún tiempo para acabar. Se basa en uno de los métodos más simples de cifrado conocidas como el cifrado Vernum.

Básicamente, nuestro código de abajo invloves una secuencia de texto y una clave generada aleatoriamente. Los dos combinados juntos crear el texto cifrado.

       (texto plano) junto con (clave de cifrado) = texto encriptado

El primer asunto es el de generar una clave. Vamos a generar una que es de 512 bytes de longitud, que debería ser suficiente para el cifrado de una cadena de texto. Aquí está el código de generación de claves:

  <%
'******************************
' KeyGeN.asp
'******************************
Const g_KeyLocation = "C:\key.txt"
Const g_KeyLen = 512
On Error Resume Next

Call WriteKeyToFile(KeyGeN(g_KeyLen),g_KeyLocation)
if Err <> 0 Then
Response.Write "ERROR GENERATING KEY." & "<P>"
Response.Write Err.Number & "<BR>"
Response.Write Err.Description & "<BR>"
Else
Response.Write "KEY SUCCESSFULLY GENERATED."
End If

Sub WriteKeyToFile(MyKeyString,strFileName)
Dim keyFile, fso
set fso = Server.CreateObject("scripting.FileSystemObject")
set keyFile = fso.CreateTextFile(strFileName, true)
keyFile.WriteLine(MyKeyString)
keyFile.Close
End Sub

Function KeyGeN(iKeyLength)
Dim k, iCount, strMyKey
lowerbound = 35
upperbound = 96
Randomize ' Initialize random-number generator.
for i = 1 to iKeyLength
s = 255
k = Int(((upperbound - lowerbound) + 1) * Rnd + lowerbound)
strMyKey = strMyKey & Chr(k) & ""
next
KeyGeN = strMyKey
End Function
%>

Ejecute la página anterior KeyGeN.asp bajo IIS. Sólo tienes que hacer esto una vez. Se escribirá una clave en el archivo " c: \ key.txt". A continuación, abra el archivo key.txt para ver la clave que acaba de crear. Debe contener 512 caracteres entre el valor ASCII decimal de 35 y 96. Esta es una cadena creada al azar, por lo que key.txt de cada persona será diferente. Aquí está mi key.txt:

2)2*8)K\&M#WFH(:Z/[52&U;WYT@UF(J;Q`V<5]B\1XS4]NG/B5068=+X*.\FY@J^=\/O#[5>*]4FR,BIP/UG558O(I?:4S)8ZN5-BPU`+[897HLEJ4+^.HEUGS(+'-G]]`)M)DH`%>%E\0H=$./85?5F97WQETI-9>M-'B.WJ,:'W,WILG&J\&):0ZR+_UO>[O&BMR)_NP;T8D\E7+NQ8DBK\+Y/I:<+;?2I0AYQ#V)LOF9JUA/GV&%U3P0VTK1NG75<^W%I7(FE2:O3[6F'LR01$7T]RSPB3`2T/_+^@-T:1+AW91W(+WH8`FM?T]=_/))L0$M./QV%[_1U`]%DB=MD\+Y3/3WB/6[]4-/O5?N?H'@CE'09(L%2JK=32\CC$4NCME2\D^=DFFP=V4;=+P-WYU8;0'#<?KB6N883O[&.)KD[I1GK]SHQ>1MC:WTG5(90IN$)I_H5@>>:NFW^S_Z:)H?G$>>?534,OQUX#U*S^)^1V_/2^>E*LEO@>_?

En la función Keygen podemos ver los valores lowerbound y upperbound como el 'rango' de caracteres ASCII que desea utilizar en la generación de la clave.

Ahora, tenemos que buscar la forma de cifrar y descifrar una cadena utilizando esta clave! El siguiente código realiza ambas tareas! Ahora, tenemos que buscar la forma de cifrar y descifrar una cadena utilizando esta clave!

  <%
'******************************
' Crypt.asp
'******************************
Dim g_Key
Const g_CryptThis = "Prueba de ASP clasico 3.0"
Const g_KeyLocation = "c:\key.txt"
g_Key = mid(ReadKeyFromFile(g_KeyLocation),1,Len(g_CryptThis))

Response.Write "<p>ORIGINAL STRING: " & g_CryptThis & "<p>"
Response.Write "<p>KEY VALUE: " & g_Key & "<p>"
Response.Write "<p>ENCRYPTED CYPHERTEXT: " & EnCrypt(g_CryptThis) & "<p>"
Response.Write "<p>DECRYPTED CYPHERTEXT: " & DeCrypt(EnCrypt(g_CryptThis)) & "<p>"

Function EnCrypt(strCryptThis)
Dim strChar, iKeyChar, iStringChar, i
for i = 1 to Len(strCryptThis)
iKeyChar = Asc(mid(g_Key,i,1))
iStringChar = Asc(mid(strCryptThis,i,1))
' *** uncomment below to encrypt with addition,
' iCryptChar = iStringChar + iKeyChar
iCryptChar = iKeyChar Xor iStringChar
strEncrypted = strEncrypted & Chr(iCryptChar)
next
EnCrypt = strEncrypted
End Function

Function DeCrypt(strEncrypted)
Dim strChar, iKeyChar, iStringChar, i
for i = 1 to Len(strEncrypted)
iKeyChar = (Asc(mid(g_Key,i,1)))
iStringChar = Asc(mid(strEncrypted,i,1))
' *** uncomment below to decrypt with subtraction
' iDeCryptChar = iStringChar - iKeyChar
iDeCryptChar = iKeyChar Xor iStringChar
strDecrypted = strDecrypted & Chr(iDeCryptChar)
next
DeCrypt = strDecrypted
End Function

Function ReadKeyFromFile(strFileName)
Dim keyFile, fso, f
set fso = Server.CreateObject("Scripting.FileSystemObject")
set f = fso.GetFile(strFileName) set ts = f.OpenAsTextStream(1, -2)
Do While not ts.AtEndOfStream
keyFile = keyFile & ts.ReadLine
Loop
ReadKeyFromFile = keyFile
End Function
%>

La primera cosa que hacemos en la página Crypt.asp es obtener el valor de la clave de nuestro archivo de clave. Una vez que hemos leído el valor en que se utilice la función MID para leer sólo lo suficiente como clave para la misma longitud que nuestra cadena de texto sin formato. A continuación pasamos a la función ENCRYPT. Esta función lee nuestra cadena de clave y nuestra cadena de caracteres de texto claro Uno a la vez. A continuación, hace una exclusión lógica (XOR) entre un personaje clave y un carácter del texto claro. El carácter resultante es el carácter codificado. ¡Felicitaciones! Usted ha encriptado una cadena.

Ahora que hemos codificado la cadena, cómo en el mundo vamos a descifrarlo? Bastante simple, la función de descifrar "es idéntica a la función de encriptar, a menos que usted sólo tiene que alimentar en el texto cifrado. La única razón, he incluido dos funciones para el cifrado y descifrado, es de dos te permiten jugar con diferentes cifrar / descifrar esquemas. Si usted lee las líneas comentadas en cada una de las funciones, que le permitirá encriptar / desencriptar con la suma y la resta.

Si pones tu mente en ello, se podría modificar fácilmente las funciones previstas para leer los archivos enteros. Esto podría ser un poco difícil si usted está haciendo esto en un archivo binario (que tendría que alguna comprobación de integridad así que los personajes no estaría fuera de la gama al convertir de ida y vuelta a ASCII). Pues bien, divertirse con él y me dejó saber lo que te ocurrió.

tags: algoritmo para encriptar y desencriptar, encriptar desencriptar, encriptar y desencriptar, cadenas en asp, asp cadenas, encriptar textos, encriptar asp, textos encriptados, encriptar contrseña c#

En esta sección encontrarás una mezcla de códigos recopilados de fuentes públicas de Internet y otros creados por ASP TEAM. Compartimos recursos útiles de buena fe para formar una base de conocimiento en el desarrollo de aplicaciones en ASP Clásico.