Histórico da Página
Composition Setup |
---|
import.css=/download/attachments/6062824/tecnologia.css
|
Pagetitle | ||||
---|---|---|---|---|
|
Realiza a criptografia descriptografia de uma string criptografada utilizando o algoritmo RSA (Ron Rivest, Adi Shamir e Len Adleman).
Sintaxe
Bloco de código | ||
---|---|---|
| ||
EncryptRSADecryptRSA( < cKeyFile >, < cInfo >, [ uParam1 ] ) |
Parâmetros
Nome | Tipo | Descrição | Obrigatório | Referência |
---|---|---|---|---|
cKeyFile |
character | Indica o nome do arquivo que contém a chave |
privada que será usada para |
descriptografar o dado. | X | |
cInfo |
character | Indica a string criptografada que será |
descriptografada. | X |
lógico
Parâmetro de compatibilidade. Passar Nil.
Retorno
Nome | Tipo | Descrição |
---|---|---|
cRet |
character | Retorna a string <cInfo> |
descriptografada com o algoritmo RSA, utilizando a chave |
privada apontada por <cKeyFile>. |
Observações
...
- 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.Caso a string encriptada tenha sido codificada em base64, através do terceiro parâmetro da função EncryptRSA, é necessário realizar a decodificação antes de submeter a string encriptada para a função DecryptRSA. Para realizar a decodificação utilize a função Decode64.
Exemplos
Bloco de código | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
user function TesteRSAexemplo() Local cFileKey cPubKey := '\rsa\publickey.pem' Local cPrivKey := '\rsa\privkey.pem' Local cInfo := 'PASSWORD' Local cRetEncrypted := '' Local cRetDecrypted := '' conout( "Criptografando com RSA a string " + cInfo ) cRetcRetEncrypted := EncryptRSA( cFileKeycPubKey, cInfo ) if !empty( cRetcRetEncrypted ) conout( "PasswordDado criptografada com sucesso" ) conout( cRetcRetEncrypted ) else conout( "Erro na chamada a EncryptRSA" ) endif cRetDecrypted := DecryptRSA(cPrivKey, cRetEncrypted) if !empty( cRetDecrypted ) conout( "Dado descriptografada com sucesso" ) conout( cRetDecrypted ) else conout( "Erro na chamada a DecryptRSA" ) endif return |
Abrangência
Disponível a partir do Advanced Protheus 6.09.Application Server 20.3.2.3
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas