| 4D v15 R2Generate digest | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|  | 
    4D v15 R2
 Generate digest 
         | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Generate digest ( param ; algoritmo ) -> resultado | ||||||||
| Parâmetro | Tipo | Descrição | ||||||
| param | BLOB, Variável texto |   | Blob o texto para o qual obter uma chave digest | |||||
| algoritmo | Inteiro longo |   | Algoritimo utilizado para retornar a chave: 0 = MD5 Digest, 1 = SHA1 Digest | |||||
| resultado | Texto |   | Valor da chave digest | |||||
O comando Generate digest devolve a extrato de um BLOB ou de um texto depois da aplicação de um algoritmo de criptografia.
Em 4D, estão disponíveis dois algoritmos: MD5 (Message Digest 5) e SHA-1 (Secure Hash 1) e 4D (algoritmo interno). Estes algoritmos são funções de hash diferentes:
O valor devolvido pelo mesmo objeto é o mesmo em todas as plataformas (Mac/Windows, 32 o 64 bits). O cálculo se realiza a partir da representação em UTF-8 do texto passado no parâmetro.
Nota: Se utiliza o comando com um texto/BLOB vazio, não devolverá void se não o seguinte valor: "d41d8cd98f00b204e9800998ecf8427e" (MD5) ou "da39a3ee5e6b4b0d3255bfef95601890afd80709" (SHA-1).
Passe um campo ou uma variável Texto ou BLOB no parâmetro param. A função Generate digest devolve o extrato como uma cadeia.
No parâmetro algoritmo, passe um valor designando a função hash a utilizar. Utilize uma das seguintes constantes, localizadas no tema Tipo Digest :
| Constante | Tipo | Valor | Comentário | 
| 4D digest | Inteiro longo | 2 | Utilizar o algoritmo interno de 4D | 
| MD5 digest | Inteiro longo | 0 | Utilizar o algoritmo MD5 | 
| SHA1 digest | Inteiro longo | 1 | Utilizar o algoritmo SHA-1 | 
Caso o calculo do extrato não executa corretamente, a função gera um erro que pode interceptar utilizando o comando ON ERR CALL e a função de volta em uma cadeia vazia.
Este exemplo compara dois documentos utilizando o algoritmo MD5:
 PLATFORM PROPERTIES($Platf;$Syst;$vlMachine)
  // Abrir o primeiro documento em modo leitura
 $Same:=True
 $vhDocRef1:=Open document("";"*";Read Mode))
 If(OK=1) // Se um documento foi selecionado
    DOCUMENT TO BLOB(Document;$FirstBlob) // Carregar o documento
    If(OK=1)
       If($Platf=Mac OS)
          DOCUMENT TO BLOB(Document;$FirstBlobRF;*)
  // Baixo Mac OS, carregar o resource fork
          $MD5_1RF:=Generate digest($FirstBlobRF;MD5 digest)
       End if
 
  // Abrir o segundo documento como leitura
       $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 os 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("Esses dois documentos são diferentes.")
             End if
          End if
       End if
    End if
 End ifEsses exemplos ilustram como recuperar a chave digest de um 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 exemplo só aceita o usuário "admin" com a senha "123" que não corresponde a um usuário 4D:
	Produto: 4D
	Tema: Ferramentas
	Número 
        1147
        
        
        
	
	Criado por: 4D v13
	Modificado: 4D v14
	
	
	
	Manual de linguagem 4D ( 4D v15)
	
	Manual de linguagem 4D ( 4D v15 R2)
	
	
	Manual de linguagem 4D ( 4D v15.4)
	
	Manual de linguagem 4D ( 4D v15.3)
 Adicionar um comentário
Adicionar um comentário