martes, octubre 04, 2005

Merrimack I - EncryptBinary()


Una de las nuevas funciones disponibles desde la ultima actualizacion de ColdFusion (Merrimack) es la funcion EncryptBinary utilizada para encryptar datos binarios utilizando varios algoritmos.

El siguiente fragmento de código muestra un formulario similar al de la figura que permite seleccionar el algoritmo y encriptar el texto ingresado utilizando el algoritmo seleccionado.



<!---
EncryptBinary: Esta funcion encrypta datos binarios utilizando un algoritmo especifico.
Categoria: Funcion de seguridad
Sintaxis: EncryptBinary(bytes, key[, algorithm[, IVorSalt[, iterations]]]))
Algoritmos soportados: CFMX_COMPAT, AES, BLOWFISH, DES, DESEDE
--->

<cfparam name="result" default="">
<cfparam name="form.TextToEncrypt" default="">
<cfparam name="cfmxcompatKey" default="ClaveUtilizadaParaElAlgoritmo_CFMX_COMPAT">
<cfparam name="form.AlgoritmosDisponibles" default="AES">

<!--- Algoritmos --->
<cfset algorithm = ArrayNew(1)>
<cfset algorithms[1] = "CFMX_COMPAT">
<cfset algorithms[2] = "AES">
<cfset algorithms[3] = "BLOWFISH">
<cfset algorithms[4] = "DES">
<cfset algorithms[5] = "DESEDE">

<cfform action="index.cfm" name="frm1" format="flash">

<cfinput type="text" name="TextToEncrypt" width="300" label="Texto a encryptar" value="#form.TextToEncrypt#"> <br />

<cfselect name="AlgoritmosDisponibles"label="Algoritmos" width="200">
<cfloop from="1" to="#ArrayLen(algorithms)#" index="i">
<cfif algorithms[i] eq form.AlgoritmosDisponibles>
<cfoutput>
<option value="#algorithms[i]#" selected>#algorithms[i]#</option>
</cfoutput>
<cfelse>
<cfoutput>
<option value="#algorithms[i]#">#algorithms[i]#</option>
</cfoutput>
</cfif>
</cfloop>
</cfselect>

<!---
Cuando utilizamos CFMX_COMPAT no se puede utilizar la funcion generateSecretKey para
generar una clave.
--->
<cfif form.TextToEncrypt neq "">

<cfif form.AlgoritmosDisponibles eq "CFMX_COMPAT">
<cfset result = encryptBinary(form.TextToEncrypt,cfmxcompatKey, form.AlgoritmosDisponibles)>
<cfelse>
<cfset result = encryptBinary(form.TextToEncrypt,generateSecretKey(form.AlgoritmosDisponibles), form.AlgoritmosDisponibles)>
</cfif>

<cftextarea name="showResult" label="Resultado" width="300" height="100" value="#BinaryEncode(result,'hex')#"/>

</cfif>

<cfinput type="submit" name="Submit" value="Probar">

</cfform>

No hay comentarios.: