Histórico da Página
...
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)
...
| Nome | Tipo | Descrição |
|---|---|---|
| oObj | object | Nova instância da classe tPBKDF2 |
Exemplos
Local oTokenPBKDF2 := tPBKDF2():New()
...
| Nome | Tipo | Descrição | Obrigatório | Referência |
|---|---|---|---|---|
| cAlgo | character | Password usado na criptografia | X |
Exemplos
oTokenPBKDF2:setPassword("password") ...
| Nome | Tipo | Descrição | Obrigatório | Referência |
|---|---|---|---|---|
| cAlgo | character | salt usado na criptografia | X |
Exemplos
oTokenPBKDF2:setSalt("salt") ...
| Nome | Tipo | Descrição | Obrigatório | Referência |
|---|---|---|---|---|
citeration | numérico | Número de iterações, rodadas de criptografia, a RFC 2898 sugere o uso de no mínimo 1000, default é 1000. |
Exemplos
oTokenPBKDF2:setIteration(10000) ...
| Nome | Tipo | Descrição | Obrigatório | Referência |
|---|---|---|---|---|
ckeylength | numérico | Tamanho da chave de saída, em bytes. 8 bytes ou 64 bits | X |
Exemplos
oTokenPBKDF2:setKeylength(16)...
| Nome | Tipo | Descrição | Obrigatório | Referência |
|---|---|---|---|---|
cdigest | character | Função de digestão usada na criptografia. |
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())
...