Saltar al contenido principal
Versión: Siguiente

Generate digest

Generate digest ( param ; algoritmo {; *} ) -> Resultado

ParámetroTipoDescripción
paramBLOB, Variable texto🡒Blob o texto para el cual obtener un extracto
algoritmoEntero largo🡒Algoritmo utilizado para devolver la llave: 0 = Digest MD5, 1 = Digest SHA1
*Operador🡒Codificar digest en Base64URL
ResultadoTexto🡐Valor de la llave digest

Descripción

El comando Generate digest devuelve el extracto de un BLOB o de un texto después de la aplicación de un algoritmo de encripción.

Pase un campo o una variable Texto o BLOB en el parámetro param. La función Generate digest devuelve la llave digest como una cadena.

En el parámetro algoritmo, pase un valor designando la función hash a utilizar. Utilice una de las siguientes constantes, ubicadas en el tema Tipo Digest:

ConstanteTipoValorComentario
_o_4D REST digestEntero largo2*** Constante obsoleta ***
MD5 digestEntero largo0Algoritmo Message Digest 5. Una serie de 128 bits devueltos como una cadena de 32 caracteres hexadecimales.
SHA1 digestEntero largo1Algoritmo Secure Hash 1. Una serie de 160 bits devueltos como una cadena de 40 caracteres hexadecimales.
SHA256 digestEntero largo3(Familia SHA-2) SHA-256 es una serie de 256 bits devueltos como una cadena de 64 caracteres hexadecimales.
SHA512 digestEntero largo4(Familia SHA-2) SHA-512 es una serie de 512 bits devueltos como una cadena de 128 caracteres hexadecimales.

Nota: no se recomienda utilizar algoritmos MD5 y SHA para manejar contraseñas; si necesita verificar contraseñas, se recomienda utilizar los comandos Generate password hash y Verify password hash .

Por defecto, si se omite el parámetro *, el digest devuelto está codificado en hexadecimal. Pase el parámetro * si desea que se codifique en Base64URL.

El valor devuelto por el mismo objeto es el mismo en todas las plataformas (macOS/Windows). El cálculo se efectúa a partir de la representación en UTF-8 del texto pasado en parámetro.

Nota: si utiliza el comando con un texto/BLOB vacío, no devolverá void sino un valor cadena (por ejemplo "d41d8cd98f00b204e9800998ecf8427e" para MD5).

Ejemplo 1

Este ejemplo compara dos documentos utilizando el algoritmo MD5:

 var $vPict1;$vPict2 : Picture
 var $FirstBlob;$SecondBlob : Blob
 READ PICTURE FILE("c:\\myPhotos\\photo1.png")
 If(OK=1)
    READ PICTURE FILE("c:\\myPhotos\\photo2.png")
    If(OK=1)
       PICTURE TO BLOB($vPict1;$FirstBlob;".png")
       PICTURE TO BLOB($vPict2;$SecondBlob;".png")
 
       $MD5_1:=Generate digest($FirstBlob;MD5 digest)
       $MD5_2:=Generate digest($SecondBlob;MD5 digest)
 
       If($MD5_1#$MD5_2)
          ALERT("Estas dos imágenes son diferentes.")
       Else
          ALERT("Estas dos imágenes son idénticas.")
       End if
    End if
 End if

Ejemplo 2

Estos ejemplos ilustran cómo recuperar el extracto de un texto:

 $key1:=Generate digest("The quick brown fox jumps over the lazy dog.";MD5 digest)
  // $key1 is "e4d909c290d0fb1ca068ffaddf22cbd0"
 $key2:=Generate digest("The quick brown fox jumps over the lazy dog.";SHA1 digest)
  // $key2 is "408d94384216f890ff7a0c3528e8bed1e0b01621"

Ver también

BASE64 DECODE
BASE64 ENCODE
Generate password hash
Protocolo seguro
WEB Validate digest