| 4D v13.4Generate digest | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  | 
    4D v13.4
 Generate digest 
         | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Generate digest ( param ; algoritmo ) -> Resultado | ||||||||
| Parámetro | Tipo | Descripción | ||||||
| param | BLOB, Variable texto |   | Blob o texto para el cual obtener un extracto | |||||
| algoritmo | Entero largo |   | Algoritmo utilizado para devolver la llave: 0 = MD5 Digest, 1 = SHA1 Digest | |||||
| Resultado | Texto |   | Valor del extracto | |||||
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.
En 4D, están disponibles dos algoritmos: MD5 (Message Digest 5) y SHA-1 (Secure Hash 1). Estos algoritmos son funciones de hash diferentes:
El valor devuelto por el mismo objeto es el mismo en todas las plataformas 
(Mac/Windows, 32 o 64 bits). El cálculo se efectúa a partir de la representación en UTF-8 del texto pasado en el parámetro, sin importar el modo de funcionamiento de la base de datos (Unicode o compatibilidad ASCII).
Nota: si utiliza el comando con un texto/BLOB vacío, no devolverá void sino el siguiente valor: "d41d8cd98f00b204e9800998ecf8427e" (MD5) o "da39a3ee5e6b4b0d3255bfef95601890afd80709" (SHA-1).
Pase un campo o una variable Texto o BLOB en el parámetro param. La función Generate digest devuelve el extracto 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:
| Constante | Tipo | Valor | Comentario | 
| MD5 Digest | Entero largo | 0 | Utilizar el algoritmo MD5 | 
| SHA1 Digest | Entero largo | 1 | Utilizar el algoritmo SHA-1 | 
Si el calculo del extracto no se ejecuta correctamente, la función genera un error que puede interceptar utilizando el comando ON ERR CALL y la función devuelta en una cadena vacía.
Este ejemplo compara dos documentos utilizando el algoritmo MD5:
 PLATFORM PROPERTIES($Platf;$Syst;$vlMachine)
  // Abrir el primer documento en modo sólo lectura
 $Same:=True
 $vhDocRef1:=Open document("";"*";Read Mode))
 If(OK=1) // Si un documento ha sido seleccionado
    DOCUMENT TO BLOB(Document;$FirstBlob) // Cargar el documento
    If(OK=1)
       If($Platf=Mac OS)
          DOCUMENT TO BLOB(Document;$FirstBlobRF;*)
  // Bajo Mac OS, cargar el resource fork
          $MD5_1RF:=Generate digest($FirstBlobRF;MD5 Digest)
       End if
 
  // Abrir el segundo documento como sólo lectura
       $vhDocRef2:=Open document("";"*";Read Mode))
       If(OK=1)
          DOCUMENT TO BLOB(Document;$SecondBlob)
          If(OK=1)
             If($Platf=Mac OS)
                DOCUMENT TO BLOB(Document;$SecondBlobRF;*)
                $MD5_2RF:=Generate digest($SecondBlobRF;MD5 Digest)
                If($MD5_1RF#$MD5_2RF) // Comparar los digests
                   $Same:=False
                End if
             End if
             $MD5_1:=Generate digest($FirstBlob;MD5 Digest)
             $MD5_2:=Generate digest($SecondBlob;MD5 Digest)
             If(($MD5_1#$MD5_2)|($Same=False))
                ALERT("Estos dos documentos son diferentes.")
             End if
          End if
       End if
    End if
 End ifEstos 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"
	Producto: 4D
	Tema: Herramientas
	Número 
        1147
        
        
        
	
     Lista alfabética de los comandos
    Lista alfabética de los comandos

	Creado por: 4D v13