El ensamblado lo creo:
CREATE ASSEMBLY Encriptador
FROM 'D:\Proyectos\Test\Encriptacion\Encriptacion\bin\Release\Encriptacion.dll'
WITH PERMISSION_SET = SAFE
go


La función la creo:

CREATE FUNCTION fc_Desencriptar
(
@cadena nvarchar(50)
)
RETURNS nvarchar(50)
AS EXTERNAL NAME Encriptador.[Encriptacion.Encriptacion].DesencriptarCadena


La clase encripta y  desencripta utilizando los namespaces:

Imports System.Security.Cryptography
Imports System.Text
Imports System.IO


La función es la siguiente:
  Public Shared Function DesencriptarCadena(ByVal InputString As String) As 
String
        If InputString = String.Empty Then
            Return ""
        Else
            Dim Des As New TripleDESCryptoServiceProvider
            'Put the string into a byte array
            Dim InputbyteArray(CType(InputString.Length / 2 - 1, Integer)) As 
Byte '= Encoding.UTF8.GetBytes(InputString)
            'Create the crypto objects, with the key, as passed in
            Dim hashMD5 As New MD5CryptoServiceProvider

            Des.Key = hashMD5.ComputeHash(ASCIIEncoding.ASCII.GetBytes("CLAVE"))
            Des.Mode = CipherMode.ECB
            'Put the input string into the byte array

            Dim X As Integer

            For X = 0 To InputbyteArray.Length - 1
                Dim IJ As Int32 = (Convert.ToInt32(InputString.Substring(X * 2, 
2), 16))
                Dim BT As New System.ComponentModel.ByteConverter()
                InputbyteArray(X) = New Byte
                InputbyteArray(X) = CType(BT.ConvertTo(IJ, GetType(Byte)), Byte)
            Next

            Dim ms As MemoryStream = New MemoryStream
            Dim cs As CryptoStream = New CryptoStream(ms, 
Des.CreateDecryptor(), _
            CryptoStreamMode.Write)

            'Flush the data through the crypto stream into the memory stream
            cs.Write(InputbyteArray, 0, InputbyteArray.Length)
            cs.FlushFinalBlock()

            '//Get the decrypted data back from the memory stream
            Dim ret As StringBuilder = New StringBuilder
            Dim B() As Byte = ms.ToArray

            ms.Close()

            Dim I As Integer

            For I = 0 To UBound(B)
                ret.Append(Chr(B(I)))
            Next

            Return ret.ToString()
        End If
    End Function

Estoy utilizando el SQL 2005.
___________________________________________
 
Sebastian Villalba
Award Support S.R.L.
[EMAIL PROTECTED]
Tel/Fax: 4541-0503 y lineas rotativas
___________________________________________

-----Original Message-----
From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Maxi Accotto
Sent: Miércoles, 20 de Junio de 2007 05:12 p.m.
To: Carlos S. Villalba
Subject: [dbms] Usar Assembly

Podrias poner el codigo? que sql usas?

El 20/06/07, Carlos S. Villalba <[EMAIL PROTECTED]> escribió:
> En el reporte utilizar la DLL???, uuy eso si que no se hacerlo. Te aclaro que 
> es Crystal report, igual ya solucione el error que publique, ahora estoy 
> peleando con otro error:
>
> Mens 6522, Nivel 16, Estado 1, Procedimiento fc_Desencriptar, Línea 0
> Error de .NET Framework durante la ejecución de la rutina o agregado definido 
> por el usuario 'fc_Desencriptar':
> System.Security.HostProtectionException: Attempted to perform an operation 
> that was forbidden by the CLR host.
>
> The protected resources (only available with full trust) were: All
> The demanded resources were: SharedState
>
> La función la cree correctamente. El error lo tira cuando la quiero usar
>
> ___________________________________________
>
> Sebastian Villalba
> Award Support S.R.L.
> [EMAIL PROTECTED]
> Tel/Fax: 4541-0503 y lineas rotativas
> ___________________________________________
> -----Original Message-----
> From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of Maxi Accotto
> Sent: Miércoles, 20 de Junio de 2007 04:34 p.m.
> To: Carlos S. Villalba
> Subject: [dbms] Usar Assembly
>
> Sebastian, yo no te recomendaria resolverlo asi, una forma seria en el
> reporte que este use la funcion dll, si igual lo queres hacer con SQL
> vas a tener que usar SQL2005
>
> El 20/06/07, Carlos S. Villalba <[EMAIL PROTECTED]> escribió:
> >
> >
> >
> > Que tal gente:
> >
> >                                Necesito consumir por medio de una función o
> > un stored procedure, una dll. Tengo muchas dudas al respecto, y son las
> > siguientes:
> >
> >                 Antes que nada explico lo que quiero hacer. Tengo un reporte
> > que muestra un listado, uno de los campos que muestra esta encriptado, y yo
> > lo quiero mostrar desencriptado. El tema es que yo a ese campo lo guardo
> > encriptado por medio de una función que realice en .NET. Ahora esa misma
> > función la quiero consumir por medio de una función o un stored procedure.
> >
> > -          Mi dll es de .NET y lo que hace es encriptar y desencriptar una
> > cadena.  Yo utilizaría la función Desencriptar solamente.
> >
> > -          Yo llego crear el assembly de la siguiente manera:
> >
> >
> >
> > CREATE ASSEMBLY Encriptador
> >
> > FROM
> > 'D:\Proyectos\Test\Encriptacion\Encriptacion\bin\Release\Encriptacion.dll'
> >
> > WITH PERMISSION_SET = SAFE
> >
> >
> >
> > Hasta aca va todo bien.
> >
> > -           Cuando quiero crear una función:
> >
> >
> >
> > CREATE FUNCTION fc_Desencriptar
> >
> > (
> >
> > @cadena varchar(50),
> >
> > @llave varchar(50)
> >
> > )
> >
> > RETURNS varchar(50)
> >
> > AS EXTERNAL NAME Encriptador.Encriptacion.DesencriptarCadena
> >
> >
> >
> >  me dice: No se encontró el tipo 'Encriptacion' en el ensamblado
> > 'Encriptacion'.
> >
> >
> >
> > La clase se llama Encriptacion y tiene 2 funciones que se llaman:
> > EncriptarCadena, y DesencriptarCadena.
> >
> > Mi preguntas son, en la clase .NET tengo que especificar algo como para que
> > el SQL lo utilice??, que puede llegar a ser este error??.
> >
> >
> >
> > Desde ya muchas gracias. Espero puedan darme alguna pequeña respuesta.
> > Gracias.
> >
> >
> >
> > ___________________________________________
> >
> >
> >
> > Sebastian Villalba
> >
> > Award Support S.R.L.
> >
> > [EMAIL PROTECTED]
> >
> > Tel/Fax: 4541-0503 y lineas rotativas
> >
> > ___________________________________________
>
>
> --
> -----------------------------------------------------------
> Microsoft MVP en SQL Server
> Mentor asociado en SQLTotalConsulting
>  (excelencia en servicios y consultoria  SQLServer)
> Orador Culminis - Microsoft Influencier
> www.sqltotalconsulting.com
> -----------------------------------------------------------
>
>
>


-- 
-----------------------------------------------------------
Microsoft MVP en SQL Server
Mentor asociado en SQLTotalConsulting
 (excelencia en servicios y consultoria  SQLServer)
Orador Culminis - Microsoft Influencier
www.sqltotalconsulting.com
-----------------------------------------------------------


Responder a