| 4D v20.1Generate digest | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 
 | 
    4D v20.1
 Generate digest 
         | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Generate digest ( param ; algorithm {; *} ) -> Function result | ||||||||
| Parameter | Type | Description | ||||||
| param | BLOB, Text variable |   | Blob or text for which to get digest key | |||||
| algorithm | Longint |   | Algorithm used to return key: 0 = MD5 Digest, 1 = SHA1 Digest, 2 = 4D digest, 3 = SHA-256 digest, 4 = SHA-512 digest | |||||
| * | Operator |   | Encode digest in Base64URL | |||||
| Function result | Text |   | Value of digest key | |||||
The Generate digest command returns the digest key of a BLOB or text after application of an encryption algorithm.
Pass a Text or BLOB field or variable in the param parameter. The Generate digest function returns the digest key as a string.
In the algorithm parameter, pass a value designating which hash function to use. Use one of the following constants, found in the Digest Type theme:
| Constant | Value | Comment | 
| 4D REST digest | 2 | Internal algorithm of 4D, useful in the context of the On REST Authentication database method when you want to use your own list of users. | 
| MD5 digest | 0 | Message Digest 5 algorithm. A series of 128 bits returned as a string of 32 hexadecimal characters. | 
| SHA1 digest | 1 | Secure Hash 1 algorithm. A series of 160 bits returned as a string of 40 hexadecimal characters. | 
| SHA256 digest | 3 | (SHA-2 family) SHA-256 is a series of 256 bits returned as a string of 64 hexadecimal characters. | 
| SHA512 digest | 4 | (SHA-2 family) SHA-512 is a series of 512 bits returned as a string of 128 hexadecimal characters. | 
Note: It is not recommended to use MD5 and SHA algorithms to handle passwords; if you need to check passwords, you are advised to use Generate password hash and Verify password hash commands.
By default if the * parameter is omitted, the returned digest is encoded in hexadecimal. Pass the * parameter if you want it to be encoded in Base64URL.
The value returned for the same object is the same on all the platforms (macOS/Windows). The calculation is performed based on the representation in UTF-8 of the text passed in the parameter.
Note: If you use the command with an empty text/BLOB, it does not return void but a string value (for example "d41d8cd98f00b204e9800998ecf8427e" for MD5).
This example compares two images using the MD5 algorithm:
 C_PICTURE($vPict1;$vPict2)
 C_BLOB($FirstBlob;$SecondBlob)
 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("These two images are different.")
       Else
          ALERT("These two images are identical.")
       End if
    End if
 End ifThese examples illustrate how to retrieve the digest key of a text:
 $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"This example only accepts the "admin" user with the password "123" that does not match a 4D user:
  //On REST Authentication database method
 C_TEXT($1;$2)
 C_BOOLEAN($0;$3)
  //$1: user
  //$2: password
  //$3: digest mode
 If($1="admin")
    If($3)
       $0:=($2=Generate digest("123";4D digest))
    Else
       $0:=($2="123")
    End if
 Else
    $0:=False
 End if
									BASE64 DECODE
									
									BASE64 ENCODE
									
									Generate password hash
									
									Secured Protocol
									
									WEB Validate digest
									
	Product:  4D
	Theme:  Tools
	Number:  
        1147
        
        
        
	
	Created:  4D v13
	Modified:  4D v14
	Modified:  4D v16 R5
	Modified:  4D v18 R4
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	4D Language Reference ( 4D v20)
	
	
	4D Language Reference ( 4D v20.1)
	
	
	
 Add a comment
Add a comment