Realiza a criptografia de uma string utilizando o algoritmo RSA (Ron Rivest, Adi Shamir e Len Adleman).
Sintaxe
EncryptRSA( < cKeyFile >, < cInfo >, [ uParam1 ] )
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
cKeyFile | caractere | Indica o nome do arquivo que contém a chave pública que será usada para criptografar o dado. | X | |
cInfo | caractere | Indica a string que será criptografada. | X | |
uParam1 | lógico | Parâmetro de compatibilidade. Passar Nil. |
Retorno
Nome | Tipo | Descrição |
---|---|---|
cRet | caractere | Retorna a string <cInfo> criptografada com o algoritmo RSA, utilizando a chave pública apontada por <cKeyFile>. |
Observações
- Em caso de sucesso, o tamanho da string retornada em <cRet> será sempre igual ao número de bytes da chave pública. Em caso de erro, retorna uma string vazia.
- O arquivo apontado por <cKeyFile> deve estar localizado no path relativo do Application Server e ter o formato ".pem". Caso não esteja no Application Server, o retorno será Nil.
- O nome do arquivo apontado por <cKeyFile> será convertido para letra minúscula.
- A string apontada por <cInfo> deve ser menor do que o tamanho da chave pública utilizada subtraído de 41 bytes (isso se deve pelo fato da função EncryptRSA usar o padrão PKCS #1).
- Para saber o tamanho da chave pública, pode ser utilizada a ferramenta rsa da OpenSSL passando o arquivo da chave pública desejada. Para mais informações acesse http://www.openssl.org/docs/apps/rsa.html.
- Para fazer o encode em base64 do valor retornado (em ASCII), utilize a função AdvPL Encode64. Para converter de base64 para ASCII, utilize a função AdvPL Decode64.
- A criptografia da informação é realizada utilizando o schema EME-OAEP (definido no padrão PKCS #1 v2.0), em conjunto com uma chave RSA pública, gerando uma informação criptografada. Uma informação criptografada desta forma somente é passível de recuperação mediante uso de descriptografia com chave privada correspondente à chave pública utilizada.
- Caso o arquivo especificado no primeiro parâmetro não conter uma chave pública (por exemplo, se conter uma chave privada, ou então não estiver no formato ".pem") uma mensagem de erro "Expecting: RSA PUBLIC KEY" ocorrerá.
- No caso do parâmetro a ser criptografado ser maior que o suportado, um erro "Invalid EncryptRSA parameter size" ocorrerá.
- A função possui a mesma funcionalidade da ferramenta rsautl da OpenSSL com padding OAEP. Para mais informações acesse http://www.openssl.org/docs/apps/rsautl.html.
Exemplos
Exemplo 1
user function TesteRSA() Local cFileKey := '\rsa\publickey.pem' Local cInfo := 'PASSWORD' conout( "Criptografando com RSA a string " + cInfo ) cRet := EncryptRSA( cFileKey, cInfo ) if !empty( cRet ) conout( "Password criptografada com sucesso" ) conout( cRet ) else conout( "Erro na chamada a EncryptRSA" ) endif return
Abrangência
Disponível a partir do Advanced Protheus 6.09.
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas