PC SOFT

AYUDA EN LÍNEA
DE WINDEV, WEBDEV Y WINDEV MOBILE

Este contenido proviene de una traducción automática.. Haga clic aquí para ver la versión original en inglés.
  • Resultados obtenidos con el cifrado AES
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Otros
Procedimientos almacenados
Cifra una cadena de caracteres o un búfer binario utilizando un algoritmo de cifrado simétrico (AES, DES, etc.).. Este mensaje encriptado 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.
WEBDEV - Código ServidorPHP Esta función está disponible para los sitios PHP a partir de la versión 200051.
Ejemplo
// Encrypt a character string by using the AES algorithm
// ------------------------------------------------------------------
sMessage is Buffer = "Message to encrypt"
bufKey is Buffer = HashString(HA_MD5_128, "password")
bufEncrypt is Buffer = EncryptStandard(sMessage, bufKey, cryptAES128)
 
// Decrypt in WLanguage
-------------------------
sResult is Buffer = DecryptStandard(bufEncrypt, bufKey, cryptAES128)
Info(sResult)
// Encryption in WLanguage
// ---------------------
sMessage is Buffer = "Message to encrypt"
bufKey is Buffer = HashString(HA_MD5_128, "password")
bufEncrypt is Buffer = EncryptStandard(sMessage, 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> [, <Fill>]]])
<Result>: Binary buffer
  • Resultado de la encriptación del mensaje especificado,
  • Vaciar la cadena (""") si se ha producido un error. Para conocer los detalles del error, utilice ErrorInfo.
Este buffer incluye dos secciones:
  • El vector de inicialización (o IV) que corresponde al bloque de bits generado al azar y que se combinó 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 <Algorithm>).
  • Los datos encriptados.
Si el mensaje debe ser desencriptado:
  • por DecryptStandard, todo lo que tiene que hacer es pasar el búfer completo 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 de operación especificado es criptaECBno se utiliza ningún vector de inicialización y, en este caso, la función devuelve los datos cifrados directamente.
<Message>: Binary 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.
Recomendamos que utilice las funciones de hashing (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 distintos 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>: Optional Integer constant
Algoritmo de encriptación a utilizar:
criptaAES128
(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.
Versiones 23 y posteriores
criptaAES256
Nueva funcionalidad versión 23
criptaAES256
criptaAES256
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.
AndroidWidget Android JavaPHP Esta constante no está disponible.
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.
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.
<Operation mode>: Optional Integer constant
Modo de procesamiento de los bloques mediante el algoritmo de encriptación:
criptaCBC
(Valor predeterminado)
Encadenamiento de bloques de cifrado - Secuencia de bloques
Versiones 23 y posteriores
cryptCFBB
Nueva funcionalidad versión 23
cryptCFBB
cryptCFBB
Cipher Feedback - Cifrado de retroalimentación. Este modo de proceso está disponible si el algoritmo utilizado corresponde al criptaAES256 ininterrumpido.
AndroidWidget Android JavaPHP Esta constante no está disponible.
Versiones 23 y posteriores
criptaCTR
Nueva funcionalidad versión 23
criptaCTR
criptaCTR
Contador de cifrado - Cifrado basado en un contador. Este modo de proceso está disponible si el algoritmo utilizado corresponde al criptaAES256 ininterrumpido.
AndroidWidget Android JavaPHP Esta constante no está disponible.
criptaECBLibro de códigos electrónicos - Diccionario de códigos. Este modo de funcionamiento no es recomendable y sólo debe utilizarse por razones de compatibilidad.
<Fill>: Optional Integer constant
Modo de llenado de los datos encriptados para que sean compatibles con el tamaño requerido por los algoritmos de encriptación por bloques:
criptaAcolchadoPKCS
(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.
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 obtener un resultado diferente cada vez que se encripta la misma información.. Sin embargo, el valor esperado se recupera correctamente cuando se llama DecryptStandard.
Clasificación Lógica de negocio / GUI : Lógica de negocio
Componente : wd250com.dll
Versión mínima requerida
  • Versión 20
Esta página también está disponible para…
Comentarios
Valida Criptografia e Descriptografia
//Chave valida sem caracteres especiais ASCII invisiveis e sem espaços em branco ou quebras de linha


loop
resultado = criaChave(valor) //cria a chave usando cryptstandar
if valida(resultado) = true //valida regras
break // se ok para de criar
end
end
BOLLER
09 05 2018
How to actually work between WD/WM/WB
https://forum.pcsoft.fr/en-US/pcsoft.us.windevmobile/2019-wm20-w20-uncryptstandard-cryptstandard/read.awp?hl=*
Jose
25 04 2018
Example
//Exemplo para Criptografar
sMessage is Buffer = "Message to encrypt"
bufKey is Buffer = HashString(HA_CKSUM_64, "password")
bufEncrypt is Buffer = CryptStandard(sMessage, bufKey, cryptDES)

Info(bufEncrypt)

// Exemplo para Decriptografar
bufKey is Buffer = HashString(HA_CKSUM_64, "password")
sResult is Buffer = UncryptStandard(bufEncrypt, bufKey, cryptDES)

Info(sResult)



//E no Windev Mobile
//Criptografia
B_senha is Buffer = HashString(HA_HMAC_MD5_128, "bob-esponja")
B_resultado_Criptografado is Buffer = CryptStandard(buf_conteudo_sig, B_senha, cryptAES128)

info(B_resultado_Criptografado)


//Descriptografia
B_senha is Buffer = HashString(HA_HMAC_MD5_128, "bob-esponja")
B_resultado_Descriptografado is Buffer = UnCryptStandard(buf_conteudo_sig, B_senha, cryptAES128)

info(B_resultado_Descriptografado )
BOLLER
16 03 2018