Histórico da Página
...
//Criando classe do PBKDF2
oTokenPBKDF2:= tPBKDF2():New()
//Informação da release utilizada da openssl
conout("release: " )
+ oTokenPBKDF2:release() )
//Parâmetro obrigatório senha para iniciar a criptografia.
oTokenPBKDF2:setPassword("password")
//Parâmetro obrigatório salt, podendo ser string ou base64
oTokenPBKDF2:setSalt("salt")
//Número de iterationiteração, quantidade de rodadas de criptografia! RFC 2898 sugere no mínimo 1000. Quanto maior mais difícil será desfazer via força bruta.
oTokenPBKDF2:setIteration(10000)
//Tamanho do buffer 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
oTokenPBKDF2:setKeylength(16)
//Função de digest usado na criptografia. Ex: SHA1, SHA256, SHA512
oTokenPBKDF2:setDigest("SHA256")
//Função obrigatório usada para chamar a criptografia
oTokenPBKDF2:encrypt()
//Funções de retorno
//Neste caso saída com 32 caracteres (hexdecimal) 2 caracteres por byte.
conout("getKeyHex Retorno em formato Hexadecimal : " + cValToChar( oTokenPBKDF2:getKeyHex() ))
conout("getKeyRaw Retorno em formato Raw : " + cValToChar( oTokenPBKDF2:getKeyRaw() ))
conout("getKeyBase64 Retorno em formato BASE64 : " + cValToChar( oTokenPBKDF2:getKeyBase64() ))
conout("getKeyBase64UrlRetorno em formato BASE64 Url Safe: " + cValToChar( oTokenPBKDF2:getKeyUrl_Base64() ))
//Importante sempre destruir a classe para evitar aumento de memoria no Appserver.
FreeObj(oTokenPBKDF2)
...