|
|
|
|
- Resultados obtenidos con el cifrado AES
EncryptStandard (Función) Cifra una cadena de caracteres o un búfer binario utilizando un algoritmo de cifrado simétrico (AES, DES, etc.).. Este mensaje cifrado puede ser descifrado por DecryptStandard. A diferencia de las funciones Cifrar y Descifrar, las funciones EncryptStandard y DecryptStandard utilizan algoritmos de cifrado estándar que permiten intercambiar mensajes cifrados entre diferentes plataformas de ejecución (Windows, Linux, Android, Java, iOS, PHP, etc.) y/o con herramientas externas. Observación: Llamar por primera vez a la función EncryptStandard puede tardar bastante tiempo porque debe inicializarse la aleatorización. // Encrypt a character string by using the AES algorithm // ------------------------------------------------------------------ bufMessage is Buffer = "Message to encrypt" bufKey is Buffer = HashString(HA_MD5_128, "password") bufEncrypt is Buffer = EncryptStandard(bufMessage, bufKey, cryptAES128) // Decrypt in WLanguage ------------------------- bufResult is Buffer = DecryptStandard(bufEncrypt, bufKey, cryptAES128) Info(bufResult)
// Encryption in WLanguage // --------------------- bufMessage is Buffer = "Message to encrypt" bufKey is Buffer = HashString(HA_MD5_128, "string to encrypt") bufEncrypt is Buffer = EncryptStandard(bufMessage, bufKey, cryptAES128) //--------------------------------------------------------------- // Decrypt via a call to the Mcrypt API of PHP nSizeIV is int = 128 / 8 bufIV is Buffer = bufEncrypt[[ TO nSizeIV]] bufData is Buffer = bufEncrypt[[nSizeIV+1 TO]] EXTERNE mcrypt_decrypt//PHP API (to be done in a WEBDEV PHP server process) Trace(mcrypt_decrypt( "rijndael-128", bufKey, bufData, "cbc", bufIV)) Sintaxis
<Result> = EncryptStandard(<Message> , <Key> [, <Algorithm> [, <Operation mode> [, <Padding> [, <Initialization vector>]]]])
<Result>: Búfer binario - Resultado del cifrado del mensaje especificado,
- Cadena vacía ("") si se produce un error. Para obtener más información sobre el error, utilice la función ErrorInfo.
Este buffer incluye dos secciones: - El vector de inicialización (IV) que corresponde a un bloque de bits generado aleatoriamente (o especificado con ) que se ha combinado con el primer bloque de datos cifrados.. Este vector es necesario para permitir el descifrado del mensaje. Su tamaño corresponde al tamaño de los bloques utilizados por el algoritmo de cifrado (véase el parámetro ).
- Los datos encriptados.
Si el mensaje debe ser desencriptado: - por DecryptStandard, todo lo que tienes que hacer es pasar todo el buffer a la función.
- por una herramienta externa, el búfer debe ser dividido para separar el vector de inicialización de los datos encriptados (ver el ejemplo).
Observación: Si el modo especificado es cryptECB , no se utiliza ningún vector de inicialización y, en este caso, la función devuelve los datos cifrados directamente.
<Message>: Búfer binario Mensaje a cifrar. <Key>: Buffer Clave con la que se deben encriptar los datos. El tamaño de esta clave depende del algoritmo de cifrado utilizado. El tamaño de la clave debe corresponderse con el del algoritmo. Le recomendamos que utilice las funciones de hash ( HashString, por ejemplo) para crear una clave a partir de una contraseña. Una contraseña larga que incluye varios caracteres alfanuméricos y símbolos distintivos proporciona una mejor seguridad de cifrado. Desarrollo multiplataforma: Para la cadena de caracteres manipular, se debe utilizar el mismo formato en todas las plataformas. Le aconsejamos que utilice cadenas en formato UTF 8 (y que convierta las cadenas Unicode si es necesario).. <Algorithm>: Constante opcional de tipo Integer Algoritmo de encriptación a utilizar: | | crypt3DES | Estándar de cifrado de datos triple. - Tamaño de la llave: 192 bits.
- Tamaño de los bloques: 64 bits.
- Tamaño del vector de inicialización (IV): 64 bits.
| cryptAES128 (Valor predeterminado) | Estándar de Cifrado Avanzado AES. - Tamaño de la llave: 128 bits.
- Tamaño de los bloques: 128 bits.
- Tamaño del vector de inicialización (IV): 128 bits.
| cryptAES256 | Estándar de Cifrado Avanzado AES. - Tamaño de la llave: 256 bits.
- Tamaño de los bloques: 128 bits.
- Tamaño del vector de inicialización (IV): 128 bits.
| cryptDES | Estándar de cifrado de datos. - Tamaño de la llave: 64 bits.
- Tamaño de los bloques: 64 bits.
- Tamaño del vector de inicialización (IV): 64 bits.
Atención: este algoritmo está actualmente obsoleto. |
<Operation mode>: Constante opcional de tipo Integer Modo Process de bloques por el algoritmo de encriptación: | | cryptCBC (Valor predeterminado) | Encadenamiento de bloques de cifrado - Secuencia de bloques | cryptCFB | Cipher Feedback - Cifrado de retroalimentación. Este modo de proceso está disponible si el algoritmo utilizado corresponde a la constante cryptAES256. | cryptCTR | Contador de cifrado - Cifrado basado en un contador. Este modo de proceso está disponible si el algoritmo utilizado corresponde a la constante cryptAES256. | cryptECB | Libro de códigos electrónicos - Diccionario de códigos. Este modo no se recomienda y solo debe usarse por razones de compatibilidad.. No se utiliza ningún vector de inicialización, y en este caso la función devuelve directamente los datos cifrados. |
<Padding>: Constante opcional de tipo Integer Modo de relleno para que los datos cifrados sean compatibles con el tamaño requerido por los algoritmos de cifrado por bloques: | | cryptPaddingPKCS (Valor predeterminado) | Los datos se rellenan con bytes cuyo valor corresponde al número total de bytes añadidos para alcanzar el tamaño solicitado. | cryptPaddingZero | Los datos se rellenan con ceros binarios hasta que se alcanza el tamaño solicitado. |
<Initialization vector>: Búfer opcional Vector de inicialización (IV) que se utilizará para el cifrado. El tamaño del búfer depende del algoritmo de cifrado (parámetro <Algorithm<). Si no se especifica este parámetro, el vector de inicialización se genera aleatoriamente. Atención: Este parámetro solo debe usarse si necesita un vector de inicialización personalizado en su proyecto. En caso contrario, se recomienda encarecidamente mantener la generación del vector de inicialización en modo aleatorio. Observaciones Resultados obtenidos con el cifrado AES La encriptación realizada con un algoritmo AES utiliza un vector de inicialización. Este vector de inicialización se modifica cada vez que se llama a la función. Por lo tanto, es normal que get obtenga un resultado diferente cada vez que la misma información es encriptada. Sin embargo, el valor esperado se recupera correctamente cuando se llama a DecryptStandard. Clasificación Lógica de negocio / UI: Lógica de negocio
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|