Ir para conteúdo
Fórum Script Brasil
  • 0

RSA de chave publica


Guest ademir

Pergunta

pessoal estou trabalhando com LockBox 2 que possui componente tlbrsa para geração de código criptografado de chave pública RSA e preciso que o resultado seja em hexadecimal com 256 digitos e esta gerando 344 digitos, alguém já mexeu com esse componente ou possui um algoritmo pronto em delphi para realizar isto, ou alguma idéia de como resolver o problema

obrigado

Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

a versão do LockBox2 tinha um bug que foi solunionado na versão LockBox v.2.07

procure neste endereço

http://www.torry.net/pages.php?id=519

voce pode tambem dar uma olhada neste artigo sobre o assunto

http://www.activedelphi.com.br/modules.php...cle&sid=145

http://sourceforge.net/projects/tplockbox

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

eu estou usando a versão 2.0.7

o código é este:

procedure TForm1.Button3Click(Sender: TObject);
  const
    sepri='teste';
    sepub='123';
  var
    lbrsa:tLbRSA;
    cam,campr,campu,cam2:string;
    i,c:integer;
    f:textfile;
begin
  LbRSA:=tLbRSA.Create(nil);
  lbrsa.KeySize:=aks1024;
  cam:=ExtractFilePath(application.exename);
  campr:=cam+'secretpr.sec';
  campu:=cam+'secretpu.sec';
  lbrsa.GenerateKeyPair;

  lbrsa.PrivateKey.Passphrase:=sepri;
  lbrsa.PublicKey.Passphrase:=sepub;
  lbrsa.PrivateKey.StoreToFile(campr);
  lbrsa.PublicKey.StoreToFile(campu);

  edit4.text:=lbrsa.EncryptString(edit2.text);
  LbRSA.free;
end;

será que estou usando o componente errado do lockbox

Editado por Micheus
Incluída tag's CODE para melhorar a visualização. Utilize a identação também ;)
Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas ,

muito obrigado pela dica do site, mas foi através deste site e de uma manual que tenho do lockbox que fiz o código.

o problema todo é que preciso mostrar o resultado em hexadecimal com até 256 digitos para geração de assinatura digital para enviar para Ministério da Fazenda do Estado de São Paulo

Link para o comentário
Compartilhar em outros sites

  • 0

talvez se voce limitar o tamanho da chave

lbrsa.KeySize:=aks512;

um exemplo com tamanho da chave delimitado

// Equivalent to:
//   openssl rsautl -encrypt -in CleartextFile -out CryptedFile -inkey KeyFile
// Probably you should set padding := RSA_PKCS1_PADDING
procedure TMainForm.RSAEncrypt(KeyFile, CleartextFile, CryptedFile: string; padding: integer);
var
  rsa: pRSA;
  keysize: integer;

  key: pEVP_PKEY;
  cleartext, crypted: pBIO;
  rsa_in, rsa_out: pointer;
  rsa_inlen, rsa_outlen: integer;
begin
// as in AskPassphrase.html
key := ReadPrivateKey(KeyFile);
rsa := EVP_PKEY_get1_RSA(key);
EVP_PKEY_free(key);
if rsa = nil then
  raise Exception.Create('Error getting RSA key. ' + GetErrorMessage);

cleartext := BIO_new_file(PChar(CleartextFile), 'rb');
if cleartext = nil then
  raise Exception.Create('Error Reading Input File. ' + GetErrorMessage);
crypted := BIO_new_file(PChar(CryptedFile), 'wb');
if crypted = nil then
  raise Exception.Create('Error Reading Output File. ' + GetErrorMessage);

keysize := RSA_size(rsa);

// Should be free if exception is raised
rsa_in := OPENSSL_malloc(keysize * 2);
rsa_out := OPENSSL_malloc(keysize);

// Read the input data
rsa_inlen := BIO_read(cleartext, rsa_in, keysize * 2);
if rsa_inlen <= 0 then
  raise Exception.Create('Error reading input Data.');
rsa_outlen := RSA_public_encrypt(rsa_inlen, rsa_in, rsa_out, rsa, padding);
if rsa_outlen <= 0 then
  raise Exception.Create('RSA operation error. ' + GetErrorMessage);

BIO_write(crypted, rsa_out, rsa_outlen);
RSA_free(rsa);
BIO_free(cleartext);
BIO_free_all(crypted);
if rsa_in <> nil then
  OPENSSL_free(rsa_in);
if rsa_out <> nil then
  OPENSSL_free(rsa_out);
end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia pessoal.

Meu primeiro Post nesse forum.

Eu possuo um certificado digital instalado na minha maquina.

E gostaria de assinar digitalmente meu arquivo . xml.

Estou tentando fazer isso atravez do delphi 2005 com o componente lockbox 2.07.

Mas não consegui dar um load no meu certificado(.pfx).

alguém tem alguma ideia de como se faz isso?

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...