4D v16.3Generate digest |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
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 = Digest MD5, 1 = Digest SHA1 |
|||||
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 los siguientes algoritmos: MD5 (Message Digest 5), SHA-1 (Secure Hash 1) y 4D (algoritmo interno). 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 parámetro.
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 :
Constante | Tipo | Valor | Comentario |
4D digest | Entero largo | 2 | Utilizar el algoritmo interno de 4D |
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 if
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"
Este ejemplo sólo acepta el usuario "admin" con la contraseña "123" que no corresponde a un usuario 4D:
//On REST Authentication database method
C_TEXT($1;$2)
C_BOOLEAN($0;$3)
//$1: usuario
//$2: contraseña
//$3: modo digest
If($1="admin")
If($3)
$0:=($2=Generate digest("123";4D digest))
Else
$0:=($2="123")
End if
Else
$0:=False
End if
Producto: 4D
Tema: Herramientas
Número
1147
Creado por: 4D v13
Modificado: 4D v14
Manual de lenguaje 4D ( 4D v16)
Manual de lenguaje 4D ( 4D v16.1)
Manual de lenguaje 4D ( 4D v16.2)
Manual de lenguaje 4D ( 4D v16.3)