Imports System.Security.Cryptography
Imports System.IO
Imports System.Text
Public Class Kerberos
Public Shared Function Encriptar(ByVal str_pEncriptar As String) As String
Return Encriptar(str_pEncriptar, "P2#5o*gH")
End Function
Public Shared Function Encriptar(ByVal str_pEncriptar As String, ByVal str_pKeyPrivada8carac As String) As String
Dim des As DESCryptoServiceProvider
Dim inputByteArray() As Byte
Dim ms As MemoryStream
Dim cs As CryptoStream
Dim mIV() As Byte = {&H45, &H32, &HA5, &H18, &H67, &H58, &HAC, &HBA}
Dim mkey() As Byte = {}
Try
mkey = System.Text.Encoding.UTF8.GetBytes(str_pKeyPrivada 8carac.Substring(0, 8))
des = New DESCryptoServiceProvider
inputByteArray = Encoding.UTF8.GetBytes(str_pEncriptar)
ms = New MemoryStream
cs = New CryptoStream(ms, des.CreateEncryptor(mkey, mIV), CryptoStreamMode.Write)
cs.Write(inputByteArray, 0, inputByteArray.Length)
cs.FlushFinalBlock()
Encriptar = Convert.ToBase64String(ms.ToArray())
Catch e As Exception
Encriptar = ""
Finally
des = Nothing
ms = Nothing
cs = Nothing
End Try
End Function
Public Shared Function Desencriptar(ByVal str_pDesEncriptar As String) As String
Return Desencriptar(str_pDesEncriptar, "P2#5o*gH")
End Function
Public Shared Function Desencriptar(ByVal str_pDesEncriptar As String, ByVal str_pKeyPrivada8carac As String) As String
Dim inputByteArray(str_pDesEncriptar.Length) As Byte
Dim des As DESCryptoServiceProvider
Dim ms As MemoryStream
Dim cs As CryptoStream
Dim encoding As System.Text.Encoding
Dim mIV() As Byte = {&H45, &H32, &HA5, &H18, &H67, &H58, &HAC, &HBA}
Dim mkey() As Byte = {}
Try
mkey = System.Text.Encoding.UTF8.GetBytes(str_pKeyPrivada 8carac.Substring(0, 8))
des = New DESCryptoServiceProvider
inputByteArray = Convert.FromBase64String(str_pDesEncriptar)
ms = New MemoryStream
cs = New CryptoStream(ms, des.CreateDecryptor(mkey, mIV), CryptoStreamMode.Write)
cs.Write(inputByteArray, 0, inputByteArray.Length)
cs.FlushFinalBlock()
encoding = System.Text.Encoding.UTF8
Desencriptar = encoding.GetString(ms.ToArray())
Catch e As Exception
Desencriptar = ""
Finally
des = Nothing
ms = Nothing
cs = Nothing
End Try
End Function
Public Shared Function EncriptarPassword(ByVal str_password As String) As String
Dim num_longitud As Int32
Dim num_contador As Int32
Dim num_caracter As Int32
Dim num_semilla As Int32
Dim str_cifrado As String
Dim str_prueba As String
num_longitud = str_password.Trim.Length
For num_contador = 0 To num_longitud - 1
num_caracter = Asc(str_password.Substring(num_contador, 1).ToUpper())
num_semilla = num_contador + 1
num_caracter += num_semilla
str_prueba = Convert.ToChar(num_caracter)
str_cifrado += Convert.ToChar(num_caracter)
Next
Return str_cifrado
End Function
Public Shared Function DesencriptarPassword(ByVal str_passwordEncriptado As String) As String
Dim num_longitud As Int32
Dim num_contador As Int32
Dim num_caracter As Int32
Dim num_semilla As Int32
Dim str_cifrado As String = String.Empty
Dim str_prueba As String
num_longitud = str_passwordEncriptado.Trim.Length
For num_contador = 0 To num_longitud - 1
num_caracter = Asc(str_passwordEncriptado.Substring(num_contador, 1))
num_semilla = num_contador + 1
num_caracter -= num_semilla
str_prueba = Convert.ToChar(num_caracter)
str_cifrado += Convert.ToChar(num_caracter)
Next
Return str_cifrado
End Function
Public Shared Function EncriptarIni(ByVal str_cadena As String) As String
If Len(Trim(str_cadena)) = 0 Then
Return ""
End If
Dim str_tabla, str_output, str_char As String
Dim str_primero, str_segundo, str_tercero As String
'------------ antes era long
Dim num_k, num_m, num_pos, num_length As Int32
Dim rnd As New Random
num_length = Len(Trim(str_cadena))
str_output = ""
str_tabla = "5736082914"
For num_k = 1 To 10
str_output += String.Format("{0:000}", rnd.Next(0, num_k * 25))
Next
str_output += Convert.ToString(num_length * num_length + 100) + String.Format("{0:000}", rnd.Next(0, 256))
For num_k = 1 To num_length
num_pos = str_tabla.IndexOf(Mid(String.Format("{0:00}", num_k), 2, 1)) 'pos(w_tabla,mid(string(k,"00"),2,1))
num_m = (num_pos) * 3 + 1
str_primero = Left(str_output, num_pos * 3)
str_segundo = String.Format("{0:000}", Asc(Mid(str_cadena, num_k, 1)) + num_k * num_k)
str_tercero = Mid(str_output, ((num_pos + 1) * 3) + 1)
str_output = str_primero + str_segundo + str_tercero
Next
Return str_output
End Function
Public Shared Function DesencriptarIni(ByVal str_cadena As String) As String
Dim str_tabla, str_output, str_char As String
'-------------------- antes era long
Dim num_k, num_m, num_pos, num_length As Int32
Dim rnd As New Random
num_length = Len(Trim(str_cadena))
str_output = ""
str_tabla = "5736082914"
If num_length <> 36 Then
Return ""
End If
'num_length = Math.Sqrt(CType(Mid(str_cadena, 31, 3), Decimal) - 100)
num_length = Convert.ToInt32(Math.Sqrt(CType(Mid(str_cadena, 31, 3), Decimal) - 100))
For num_k = 1 To num_length
num_pos = str_tabla.IndexOf(Mid(String.Format("{0:00}", num_k), 2, 1))
'num_m = Convert.ToDecimal(Mid(str_cadena, (num_pos) * 3 + 1, 3))
num_m = Convert.ToInt32(Mid(str_cadena, (num_pos) * 3 + 1, 3))
num_m = num_m - num_k * num_k
str_output += Convert.ToChar(num_m)
Next
Return str_output
End Function
End Class |