Aqui de nuevo
Hace tiempo que mencione que dejaria algo para encriptacion, y para no dejar la palabra empeñada
, muestro este pequeño codigo, espero que les sirva
ok, aki vamos
:
abriremos un nuevo proyecto, el cual sera un EXE ActiveX como en nuestro ejemplo anterior.
ya una ves iniciado el espacio de trabajo, cambiaremos el nombre de nuestra clase, dejandolo en "ClsEncrypt"
ahora el codigo:
Código HTML:
'Set Encripta = New cEncrypt
'sResultado = Encripta.ConvertirClave(CadenaxDesencriptar, sClave, False)
'False=desencriptar, True =Encriptar
Option Explicit
Public Enum eEncrypt
eDesencriptar = 0
eEncriptar = 1
End Enum
Private m_Accion As eEncrypt
' Variable privadas para las propiedades
Private m_sOriginal As String
Private m_sClave As String
Private Const mc_sClave As String = "123456"
' Si se debe devolver error al fallar en la asignación
' por defecto es True
Private m_RaiseError As Boolean
'----------------------------------------
' Clase Inicalizar, RECORDAR MODIFICAR EL VALOR POR DEFECTO
' DE LA CLAVE
'----------------------------------------
Private Sub Class_Initialize()
' Por defecto devolver error
m_RaiseError = True
' Clave por defecto
m_sClave = "Pruebas"
' Por defecto se encriptará
m_Accion = eEncriptar
End Sub
Public Function ConvertirClave(Optional ByVal sOriginal As String = "", _
Optional ByVal sClave As String = "", _
Optional vAccion As Variant) As String
Dim LenOri As Long
Dim LenClave As Long
Dim i As Long, j As Long
Dim cO As Long, cC As Long
Dim k As Long
Dim v As String
' Si no se especifican los parámetros,
' se usarán los valores de las propiedades
If Len(sOriginal) = 0 Then _
sOriginal = m_sOriginal
If Len(sClave) = 0 Then _
sClave = m_sClave
' Si se especifica el último parámetro,
If Not IsMissing(vAccion) Then
' usar nuestra propiedad para convertir el valor
Me.Accion = vAccion
End If
LenOri = Len(sOriginal)
LenClave = Len(sClave)
v = Space$(LenOri)
i = 0&
For j = 1 To LenOri
i = i + 1
If i > LenClave Then
i = 1
End If
cO = Asc(Mid$(sOriginal, j, 1))
cC = Asc(Mid$(sClave, i, 1))
If m_Accion Then
k = cO + cC
If k > 255 Then
k = k - 255
End If
Else
k = cO - cC
If k < 0 Then
k = k + 255
End If
End If
Mid$(v, j, 1) = Chr$(k)
Next
ConvertirClave = v
End Function
Public Function DesEncriptar(Optional ByVal sOriginal As String = "", _
Optional ByVal sClave As String = "") As String
' Esta es una función que llamará directamente a ConvertirClave
'
m_Accion = eDesencriptar
DesEncriptar = ConvertirClave(sOriginal, sClave)
End Function
Public Function Encriptar(Optional ByVal sOriginal As String = "", _
Optional ByVal sClave As String = "") As String
' Esta es una función que llamará directamente a ConvertirClave
'
m_Accion = eEncriptar
Encriptar = ConvertirClave(sOriginal, sClave)
End Function
Public Property Get CadenaOriginal() As String
CadenaOriginal = m_sOriginal
End Property
Public Property Let CadenaOriginal(ByVal NewValue As String)
' Sólo asignar si la cadena tiene algún contenido
If Len(NewValue) Then
m_sOriginal = NewValue
Else
' Devolver un error, si así se ha indicado
If m_RaiseError Then
With Err
.Description = "Se debe asignar algún contenido a la cadena a encryptar / desencriptar"
.Number = 13
.Source = "cEncrypt::CadenaOriginal"
.Raise .Number
End With
End If
End If
End Property
Public Property Get Clave() As String
Clave = m_sClave
End Property
Public Property Let Clave(ByVal NewValue As String)
' Sólo asignar si la cadena tiene algún contenido
If Len(NewValue) Then
m_sClave = NewValue
Else
' Devolver un error, si así se ha indicado
If m_RaiseError Then
With Err
.Description = "Se debe asignar algún contenido a la cadena a usar como clave para encriptar / desencriptar"
.Number = 13
.Source = "cEncrypt::Clave"
.Raise .Number
End With
Else
' Si no, devolver el valor por defecto
m_sClave = mc_sClave
End If
End If
End Property
Public Property Get RaiseError() As Boolean
RaiseError = m_RaiseError
End Property
Public Property Let RaiseError(ByVal NewValue As Boolean)
m_RaiseError = NewValue
End Property
Public Property Get Accion() As eEncrypt
Accion = m_Accion
End Property
Public Property Let Accion(ByVal NewValue As eEncrypt)
' Si el valor indicado es 0 será Descencriptar,
' si es cualquier otro valor, será encriptar
' De esta forma se aceptarán valores boolenos
If NewValue = 0 Then
m_Accion = eDesencriptar
Else
m_Accion = eEncriptar
End If
End Property
Nuestro siguiente paso sera guardar el proyecto "ClsEncrypt", esto es meramente circunstancial, ustedes pueden poner el nombre que deseen, asi podran recordarlo mas facilmente
y como en nuestro ejemplo anterior deben registrar el DLL resultante (retomare parte del texto anterior)
Cita: Ahora, ya una ves que nosotros guardamos el proyecto y renombrado la clase, podemos proceder a generar nuestra DLL, para esto:
Cita:
Cita: Menu Archivo
"Generar ClsEncrypt.Dll" <---- cambiara dependiendo del nombre de su proyecto
despues les pregunta, en que directorio desean guardarlo, una ves seleccionado todo listo....
Siguiente paso, una ves terminada la compilacion de nuestro DLL, procederemos a realizar la copia a nuestro directorio WEB, y tambien al
registro de la misma de la siguiente forma:
Cita:
Cita: Regsvr32 [/u] [/s] <nombre del fichero>
Por ejemplo:
REGSVR32 c:\windows\system\Dao350.dll
Los parámetros opcionales [/u] [/s] significan lo siguiente:
[/u] - lo utilizamos cuando queremos "desregistrar" una DLL (o un .ocx en vez de registrarlo).
[/s] - modo "silencioso" - no despliega los mensajes durante la operación.
ya realizado este segundo procedimiento, las pruebas de uso
primero:
creamos el objeto que contendra la clase
Cita:
Cita: set Encripta = server.CreateObject("Encriptar.clsEncriptar")
segundo: parametrizacion del entorno
la funcion consta de la cadena de texto, clave de encriptacion y un valor booleano, similar a esto:
Para encriptar
Cita: Encripta.ConvertirClave(texto, Clave, True)
y esta para desencriptar
Cita: Encripta.ConvertirClave(texto, Clave, False)
cabe mencionar que nosotros tenemos por defecto una clave de encriptacion, esto quiere decir, podemos realizar una encriptacion sin necesidad de mandar una clave para este fin, me refiero a esto
Para encriptar
Cita: Encripta.ConvertirClave(texto, , True)
y esta para desencriptar
Cita: Encripta.ConvertirClave(texto, , False)
donde miramos la ausencia del segundo parametro (la clave)
Ahora, he aqui un ejemplo de uso en nuestra pagina ASP
Cita:
Cita: <%'recordar que esta sera nuestra clave de encriptacion
Clave="VB6"
'clave o string a encriptar
text="Prueba Exitosa"
palabra a encriptar es: <%=pass%><br />
encriptada:(<%
TextoEnc = Encripta.ConvertirClave(texto, Clave, True)
response.Write textoenc
%>)<br />
desencriptada:(<%
TextoEnc = Encripta.ConvertirClave(textoenc, Clave, false)
response.Write textoenc
%>)<br />
Ahora utilizando la clave por defecto
<br />
mismo texto:
<br />
encriptada:(<%
TextoEnc = Encripta.ConvertirClave(pass, , True)'encriptar
response.Write textoenc
%>)<br />
la respuesta seria "encriptada:(¦´›»¤‡v‡ž¿µšÅµ‡)"
desencriptada:(<%
TextoEnc = Encripta.ConvertirClave(textoenc, , false)
response.Write textoenc
%>)<br />
espero que les sirva, como guia para que puedan crear sus propios codigos de encriptacion de 2 vias