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
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReportes y ConsultasCódigo de Usuario (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Código Navegador
WINDEV Mobile
AndroidWidget Android iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Otros
Procedimientos almacenados
Descifra un mensaje que fue encriptado con un algoritmo de encriptación estándar..
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.
// Encrypt a character string by using the AES algorithm
sMessage is Buffer = "Message to encrypt"
sPassword is ANSI string = "password"
bufKey is Buffer = HashString(HA_MD5_128, sPassword)
bufEncrypt is Buffer = EncryptStandard(sMessage, bufKey, cryptAES128)
// Decryption
bufResult is Buffer = DecryptStandard(bufEncrypt, bufKey, cryptAES128)
Info(bufResult)
Sintaxis
<Result> = DecryptStandard(<Encrypted message> , <Key> [, <Algorithm> [, <Operation mode> [, <Padding>]]])
<Result>: Búfer binario
  • Resultado del descifrado 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.
<Encrypted message>: Búfer binario
Mensaje para descifrar. Este mensaje puede ser el resultado del cifrado obtenido durante la llamada a EncryptStandard.
Esta memoria intermedia debe incluir dos secciones:
  • El vector de inicialización (o IV) utilizado para cifrar los datos.
  • Los datos encriptados.
Si el mensaje estaba encriptado:
  • por EncryptStandard, este parámetro debe corresponder al valor devuelto por la función.
  • por una herramienta externa, el búfer debe construirse concatenando los datos cifrados con el vector de inicialización utilizado.
Observación: si el modo de operación especificado es cryptECB , no se usó ningún vector de inicialización para cifrar el mensaje y, en este caso, el parámetro debe corresponder directamente a los datos cifrados.
<Key>: Buffer
Clave con la que se cifraron los datos. Esta clave debe ser idéntica a la suministrada al encriptar el mensaje.
<Algorithm>: Constante opcional de tipo Integer
Algoritmo de encriptación utilizado. Este parámetro debe corresponder al algoritmo utilizado para encriptar el mensaje..
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 utilizado. Este parámetro debe corresponder al modo de operación utilizado para encriptar el mensaje.
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 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 Esta constante no está disponible.
cryptECBLibro 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.
<Padding>: Constante opcional de tipo Integer
Modo de relleno de los datos cifrados para que sean compatibles con el tamaño requerido por los algoritmos de cifrado por bloques. Este parámetro debe corresponder al modo de relleno utilizado para encriptar el mensaje.
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.
Clasificación Lógica de negocio / UI: Lógica de negocio
Componente: wd290com.dll
Versión mínima requerida
  • Versión 20
Esta página también está disponible para…
Comentarios
Exemplo com Fonte
https://repository.windev.com/resource.awp?file_id=281474976711928;exemplo-cryptografia-descryptografia
Boller
15 03 2024
OBS
É muito importante fazer o encode e o decode base 64 quando usar em arquivos de texto ou arquivos ini, pois existe varios formatos de arquivos sendo eles: ansi, unicode, utf-8. E uma vez encodado e decodando a criptofrafia e descriptografia vai funcionar perfeitamente pois os caracteres originais estaram cifrados, se nao fazer o encode e decode os caracteres armazenados nao vao bater e a senha usada sera inutil e nao dara certo o procedimento.

Il est très important d'encoder et de décoder la base 64 lors de l'utilisation de fichiers texte ou de fichiers ini, car il existe plusieurs formats de fichiers : ansi, unicode, utf-8. Et une fois encodés et décodés, le cryptage et le décryptage fonctionneront parfaitement car les caractères originaux seront cryptés, si vous n'encodez pas et ne décodez pas les caractères stockés ne correspondront pas et le mot de passe utilisé sera inutile et la procédure ne fonctionnera pas.

It is very important to encode and decode base 64 when using text
Boller
15 03 2024
Exemplo 1
E no Windev Mobile
//Criptografia
buf_conteudo_sig is Buffer = "Meu nome é Adriano Boller"
B_senha is Buffer = HashString(HA_HMAC_MD5_128, "bob-esponja")
B_resultado_Criptografado is Buffer = CryptStandard(buf_conteudo_sig, B_senha, cryptAES128)
B_resultado_Criptografado=Encode(B_resultado_Criptografado, encodeBASE64)

Info(B_resultado_Criptografado)


//Descriptografia
B_senha = HashString(HA_HMAC_MD5_128, "bob-esponja")
B_resultado_Descriptografado is Buffer = Decode(B_resultado_Criptografado, encodeBASE64)
B_resultado_Descriptografado = UncryptStandard(B_resultado_Descriptografado, B_senha, cryptAES128)

Info(B_resultado_Descriptografado )
Boller
15 03 2024
Exemplo 2
Example
//Exemplo para Criptografar
// se usar a criptografia em um arquivo texto ou ini deve fazer encode 64 bits.

sMessage is Buffer = "Message to encrypt"
bufKey is Buffer = HashString(HA_CKSUM_64, "password")
bufEncrypt is Buffer = CryptStandard(sMessage, bufKey, cryptDES)
bufEncrypt = Encode(bufEncrypt, encodeBASE64)
Info(bufEncrypt)

// Exemplo para Decriptografar
bufKey = HashString(HA_CKSUM_64, "password")
sResult is Buffer = Decode(bufEncrypt, encodeBASE64)
sResult = UncryptStandard(sResult, bufKey, cryptDES)
Info(sResult)
Boller
15 03 2024

Última modificación: 23/06/2023

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