Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Composition Setup
import.css=/download/attachments/6062824/tecnologia.css

Pagetitle
EncryptRSADecryptRSAEncryptRSA
DecryptRSA

Realiza a criptografia descriptografia de uma string criptografada utilizando o algoritmo RSA (Ron Rivest, Adi Shamir e Len Adleman).

Sintaxe

Bloco de código
collapsefalse
EncryptRSADecryptRSA( < cKeyFile >, < cInfo >, [ uParam1 ] )

Parâmetros

Nome

Tipo

Descrição

Obrigatório

Referência

cKeyFile

caractere

character

Indica o nome do arquivo que contém a chave

pública

privada que será usada para

criptografar

descriptografar o dado.

X


cInfo

caractere

character

Indica a string criptografada que será

criptografada

descriptografada.

X

uParam1

lógico

Parâmetro de compatibilidade. Passar Nil.


Retorno

Nome

Tipo

Descrição

cRet

caractere

character

Retorna a string <cInfo>

criptografada

descriptografada com o algoritmo RSA, utilizando a chave

pública

privada 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

Bloco de código
languagecpp
themeEclipse
titleExemplo 1
linenumberstrue
collapsefalse
user function TesteRSAexemplo()
    Local cFileKeycPubKey         := '\rsa\publickey.pem'
    Local cPrivKey        := '\rsa\privkey.pem'
    Local cInfo           := 'PASSWORD'
    Local cRetEncrypted   := ''
    Local cRetDecrypted   := ''

    conout( "Criptografando com RSA a string " + cInfo )

  cRet  cRetEncrypted := EncryptRSA( cFileKeycPubKey, cInfo )
    if !empty( cRetcRetEncrypted )
        conout( "PasswordDado criptografada com sucesso" )
        conout( cRetcRetEncrypted )
    else
        conout( "Erro na chamada a EncryptRSA" )
    endif

return

Abrangência

...

    cRetDecrypted := DecryptRSA(cPrivKey, cRetEncrypted)
    if !empty( cRetDecrypted )
        conout( "Dado descriptografada com sucesso" )
        conout( cRetDecrypted )
    else
        conout( "Erro na chamada a DecryptRSA" )
    endif
return