Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Ele é amplamente adotado em cenários de segurança (RFC2898 https://datatracker.ietf.org/doc/html/rfc2898#section-5.2), incluindo o armazenamento seguro de senhas e a geração de chaves criptográficas.


Observações

...

Exemplo

User Function testpbkdf2()

  Local oTokenPBKDF2 := Nil

  //Criando classe do PBKDF2
  oTokenPBKDF2:= tPBKDF2():New()
  
  //Informação da release utilizada da openssl
  conout("release")
  oTokenPBKDF2:release()
  
  //Parametro obrigatorio senhaParâmetro obrigatório senha para iniciar a criptografia. 
  oTokenPBKDF2:setPassword("password")
  
  //Parametro obrigatorio Parâmetro obrigatório salt, podendo ser string ou base64
  oTokenPBKDF2:setSalt("salt")
  
  //Número de iteration, quantidade de rodadas de criptografia! RFC 2898 sugere no minimo mínimo 1000. Quanto maior mais difícil será desfazer via força bruta.
  oTokenPBKDF2:setIteration(10000)
  
  //Tamanho do buffer da chave de saidasaída em bytes.
  //8  bytes ou 64  bits
  //16 bytes ou 128 bits
  //32 bytes ou 256 bits
  //64 bytes ou 512 bits
  oTokenPBKDF2:setKeylength(16)
  
  //Função de digest usado na criptografia
  //. Ex: SHA1, SHA256, SHA512
  oTokenPBKDF2:setDigest("SHA256")
  
  //Função obrigatorio obrigatório usada para chamar a criptografia
  oTokenPBKDF2:encrypt() 
  
  //Funções de retorno
  //Neste caso saida saída com 32 caracteres (hexdecimal) 2 caracteres por byte. 
  conout("getKeyHex      : " + cValToChar( oTokenPBKDF2:getKeyHex() ))
  conout("getKeyRaw      : " + cValToChar( oTokenPBKDF2:getKeyRaw() ))  
  conout("getKeyBase64   : " + cValToChar( oTokenPBKDF2:getKeyBase64() ))  
  conout("getKeyBase64Url: " + cValToChar( oTokenPBKDF2:getKeyUrl_Base64() ))  
  
  //Importante sempre destruir a classe para evitar aumento de memoria no Appserver.
  FreeObj(oTokenPBKDF2)

...

NomeTipoDescrição
oObjobjectNova instância da classe tPBKDF2 
Exemplos
    Local oTokenPBKDF2 := tPBKDF2():New()

...

NomeTipoDescriçãoObrigatórioReferência
cAlgocharacterPassword usado na criptografiaX
Exemplos
     oTokenPBKDF2:setPassword("password") 

...

NomeTipoDescriçãoObrigatórioReferência
cAlgocharactersalt usado na criptografiaX
Exemplos
    oTokenPBKDF2:setSalt("salt") 

...

NomeTipoDescriçãoObrigatórioReferência
citeration numéricoNúmero de iterações, rodadas de criptografia, a RFC 2898 sugere o uso de no mínimo 1000, default é 1000.

Exemplos
    oTokenPBKDF2:setIteration(10000) 

...

NomeTipoDescriçãoObrigatórioReferência
ckeylengthnumérico

Tamanho da chave de saída, em bytes. 

8  bytes ou 64  bits
16 bytes ou 128 bits
32 bytes ou 256 bits
64 bytes ou 512 bits

X
Exemplos
    oTokenPBKDF2:setKeylength(16)

...

NomeTipoDescriçãoObrigatórioReferência
cdigest character

Função de digestão usada na criptografia.
Padrão: SHA256
SHA1, SHA224, SHA256, SHA384, SHA512, SHA512_224, SHA512_256, SHA3_224, SHA3_256, SHA3_384, SHA3_512.



Exemplos
    oTokenPBKDF2:setDigest("SHA256")

...

Obrigatório a chamada desta função para criptografar os dados e também identificar erros.

Exemplos
    oTokenPBKDF2:encrypt() 

...

Funções de retorno.

getKeyHex() //Neste caso saída com 32 caracteres (

...

hexadecimal) 2 caracteres por byte em maiúsculo. 

getKeyRaw() //Formato padrão de saída Hexadecimal em minúsculo. 

...

Sintaxe  oTokenPBKDF2:release()
release()
Exemplos
    conout("Versão da openssl: " + oTokenPBKDF2:release())

...

Sintaxe  oTokenPBKDF2:getLastError()
getLastError()
Exemplos
    conout("Erro na geração da criptografia. Error: " + oTokenPBKDF2:getLastError())

...