AYUDA EN LÍNEA
 WINDEVWEBDEV Y WINDEV MOBILE

Este contenido se ha traducido automáticamente.  Haga clic aquí  para ver la versión en inglés.
Ayuda / WLanguage / Funciones WLanguage / Funciones estándar / Funciones de cifrado/compresión
  • Resultados obtenidos con el cifrado AES
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.
Ejemplo
// Encrypt a character string by using the AES algorithm
// ------------------------------------------------------------------
bufMessage is Buffer = "Message to encrypt"
bufKey is Buffer = HashString(HA_MD5_128, "string to encrypt")
bufEncrypt is Buffer = bufMessage.EncryptStandard(bufKey, cryptAES128)
 
// Decrypt in WLanguage
-------------------------
bufResult is Buffer = bufEncrypt.DecryptStandard(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 = bufMessage.EncryptStandard(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> = <Message>.EncryptStandard(<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>: Buffer
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:
crypt3DESEstá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.
cryptAES256Está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.
cryptDESEstá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
cryptCFBCipher Feedback - Cifrado de retroalimentación. Este modo de proceso está disponible si el algoritmo utilizado corresponde a la constante cryptAES256.
AndroidWidget Android JavaPHP Esta constante no está disponible.
cryptCTRContador de cifrado - Cifrado basado en un contador. Este modo de proceso está disponible si el algoritmo utilizado corresponde a la constante cryptAES256.
AndroidWidget Android JavaPHP Esta constante no está disponible.
cryptECBLibro 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.
cryptPaddingZeroLos 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.
PHP Este parámetro no está disponible.
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
Componente: wd290com.dll
Versión mínima requerida
  • Versión 26
Esta página también está disponible para…
Comentarios
Haga clic en [Agregar] para publicar un comentario

Última modificación: 22/06/2023

Señalar un error o enviar una sugerencia | Ayuda local