Olá boa tarde,
estou com a necessidade de criptografar uma string usando uma chave publica RSA, existe como fazer isso em advpl?
Att.
Se alguma pergunta ou resposta lhe foi útil, não deixe de dar seu voto positivo!
Olá boa tarde,
estou com a necessidade de criptografar uma string usando uma chave publica RSA, existe como fazer isso em advpl?
Att.
Boa Tarde Vinicius,
Da uma olhada no conteúdo a respeito, no blog do Júlio Wittwer , tem um artigo com bastante coisa a respeito:
https://siga0984.wordpress.com/2019/09/06/criptografia-em-advpl-parte-14/
https://siga0984.wordpress.com/2019/09/07/criptografia-em-advpl-parte-15/
Verificando a assinatura
Primeiro, precisamos da chave pública para a verificação. Ela pode ser obtida a partir da chave privada usando o seguinte comando Openssl:
openssl rsa -in note-juliow-ssd.key -pubout > note-juliow-ssd-public.key
E, para verificar a assinatura usando a OpenSSL, usamos a imagem, a chave publica e a assinatura a ser verificada:
openssl dgst -sha1 -verify note-juliow-ssd-public.key -signature padlock.sign padlock.png
Agora vamos ver como fazer isso em AdvPL:
User Function MyVery()
Local cImageFile := "\imagens\padlock.png"
Local cStrImage := ''
Local cSignInfo := "\imagens\padlock.sign"
Local cHash := ''
Local cSignature := ""
Local nH, nTam
Local cError
// Lê o conteudo da imagem do disco
nH := fopen(cImageFile)
nTam := fSeek(nH,0,2)
fSeek(nh,0)
fRead(nH,cStrImage,nTam)
fclose(nH)
// Calcula o SHA1 da imagem
cHash := SHA1( cStrImage , 1 )
// Le a assinatura do no disco
nH := fopen(cSignInfo)
nTam := fSeek(nH,0,2)
fSeek(nh,0)
fRead(nH,@cSignature,nTam)
fclose(nH)
// Verifica se a assinatura bate com o HASH do arquivo
// usando a minha chave publica
lOk := PrivVeryRSA( "\siga0984\note-juliow-ssd-public.key", cHash, 2, cSignature, @cError )
If lOk
MsgInfo("Assinatura OK" )
Else
MsgInfo("Falha de verificação de assinatura",cError )
Endif
Return
Talvez esta parte te auxilie em algo:
https://siga0984.wordpress.com/2019/09/01/criptografia-em-advpl-parte-13/
Atenciosamente,
nada relacionado lá
— VINICIUS GATI 13 de Jul de 2020Oi vi que editou, mas realmente o que eu preciso é usar a chave publica rsa para criptografar e não assinar, é lougura mas é isso aí que o projeto está exigindo hehe
— VINICIUS GATI 14 de Jul de 2020Entendo, mas é meio estranho porque conceitualmente,se você utilizar a chave publica, geraria uma insegurança, afinal, qualquer um com acesso a chave publica criptografando, pode se passar pelo seu sistema e agir de forma maliciosa.
— Douglas Bichir 14 de Jul de 2020se a pessoa tiver acesso a chave sim, é que sao 2 camadas, assim é estranho é um projeto internacional de uma marca famosa, mas um arquivo é criptografado e esse criptografia gera informações da criptografia, aí essa informação é criptografada usando essa chave publica, enfim é estranho mas é isso aí.
— VINICIUS GATI 14 de Jul de 2020
Conseguiu resolver o problema? Estou com a mesma necessidade, preciso criptografar uma mensagem usando RSA-1024.
— Everton Alves 18 de Sep de 2021Consegui resolver aqui instalando o programa OpenSSL e utilizando a função WaitRunSrv para executar comandos do lado do servidor.
— Everton Alves 22 de Sep de 2021