Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

Versão 1 Próxima »

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.

  • Sem rótulos