Jump to content

Encriptação RSA php mysql


jonymanso
 Share

Recommended Posts

Boas pessoal,

pretendo realizar uma aplicação de facturação através dos decreto de lei das finanças.http://link http://info.portaldasfinancas.gov.pt/NR/rdonlyres/8C23078D-3B1F-45EE-9D02-C01C2DCA6949/0/portaria%2022-A%20-%202012.pdf.. os artigos relevantes são o 3 e o 6.

Neste momento encontro-me na fase de encriptar os dados da tabela de facturação, numero da factura, data da factura,... mas nao estou a conseguir aplicar no meu projecto. Já tenho o inserir/alterar/apagar a funcionar mas necessito só de encriptar em RSA os dados inseridos na minha tabela facturação em mysql.

Alguém poderia-me ajudar a realizar uma função para isso?!estou em estágio curricular e precisava de fazer o quanto antes esta função..

obrigado..

Link to comment
Share on other sites

Não precisas de encriptar, apenas assinar. A função relevante é a openssl_sign. Antes de lá chegares, contudo, tens de criar as chaves (com o openssl_pkey_new).

"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Link to comment
Share on other sites

Não precisas de encriptar, apenas assinar. A função relevante é a openssl_sign. Antes de lá chegares, contudo, tens de criar as chaves (com o openssl_pkey_new).

No artigo 6 diz que é necessário.

O sistema de identificação a que se refere a alínea b) do artigo 3.º deve utilizar o algoritmo de cifra assimétrica RSA, recebendo como argumento os seguintes dados concatenados, pela ordem indicada, com o separador «;» (ponto e vírgula), que constituem a mensagem a assinar com a chave privada:

a) A data de criação da fatura, do documento equivalente ou do talão de venda [campo 4.1.4.6 - data do documento de venda (InvoiceDate) do SAF-T (PT)];

b) A data e hora da última alteração da fatura, do documento equivalente ou do talão de venda [campo 4.1.4.9 - data de gravação do documento (SystemEntryDate) do SAF-T (PT)];

c) O número da fatura, do documento equivalente ou do talão de venda [campo 4.1.4.1 - identificação única do documento de venda (InvoiceNo) do SAF-T (PT)];

d) O valor da fatura, do documento equivalente ou do talão de venda [campo 4.1.4.15.3 - total do documento com impostos (GrossTotal) do SAF-T (PT)];

e) A assinatura gerada no documento anterior, da mesma série [campo 4.1.4.3 - chave do documento (Hash) do SAF-T (PT)].

Link to comment
Share on other sites

O artigo 6º diz que é preciso assinar.

"O sistema de identificação a que se refere a alínea b) do artigo 3.º deve utilizar o algoritmo de cifra assimétrica RSA, recebendo como argumento os seguintes dados concatenados, pela ordem indicada, com o separador «;» (ponto e vírgula), que constituem a mensagem a assinar com a chave privada

"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Link to comment
Share on other sites

Boa tarde,

será possível alguém me ajudar com o SAFT?

Guiei-me por este tutorial http://andytson.com/blog/2009/07/php-public-key-cryptography-using-openssl/ para resolver o problema do openssl, mas pelo que vi agora aqui, não será o tutorial mais correcto para seguir. Alguém me pode indicar um bom onde eu possa ver como criar as assinaturas para guardar na base de dados aquando a criação dos documentos para quando exportar o SAF-T para xml apenas tenha que fazer consultas e não assinaturas ou encriptações?

Estou a usar o php em linux.

Obrigado.

Link to comment
Share on other sites

Eu vi esse website e achei-o bastante informativo.

Não percebi bem o que queres fazer, a tua frase está um pouco confusa.

Parece-me que estás um pouco confuso com o conceito de assinar em vez de encriptar.

Assinar, análogamente a uma assinatura manual, serve para certificar futuros utilizadores de um pedaço de data, que esta foi efectivamente confirmada (assinada) pelo dono da assinatura.

Por exemplo, eu envio-te um documento qualquer e tu pássa-lo a outra pessoa. Essa outra pessoa tem que confiar em ti e acreditar que fui eu que o escrevi, mas se não me conhecer, não tem nenhuma maneira de o verificar.

No entanto, se eu assinar o ficheiro com a minha chave privada e enviar a assinatura juntamente com o documento, qualquer pessoa que tenha a minha chave publica, pode usar a assinatura para confirmar que aquele documento foi de facto assinado por mim.

Isto é importante porque se alguem o tiver modificado, a confirmação da assinatura vai falhar.

Eu nao percebi se a tua aplicação tem que gerar pares de chaves ou se só tem que os utilizar. Se só tem que os utilizar, podes gerá-los na linah de comandos que é mais pratico.

Se tiveres que guardar chaves na base de dados, talvez seja mais conveninete exportá-las primeiro para ascii (há funções para isso) por motivos praticos.

Link to comment
Share on other sites

... Alguém me pode indicar um bom onde eu possa ver como criar as assinaturas para guardar na base de dados aquando a criação dos documentos para quando exportar o SAF-T para xml apenas tenha que fazer consultas e não assinaturas ou encriptações?

Como estás a usar o Linux o melhor será usares a biblioteca OpenSSL. No pacote encontrarás os ficheiros demos/sign/sign.c e apps/enc.c, nos quais me baseei para criar o meu código. Atenção que terás que gerar a assinatura e depois convertê-la para base64.

Cuidado com a necessidade de serialização: como dizes que usas o PHP deves estar a criar algo eminentemente multi-utilizador, em que vários utilizadores podem estar a criar documentos do mesmo tipo simultaneamente. Tens de garantir que apenas pode ser gravado na BD um documento de cada vez e que terá de ser assinado na altura. Atenção que cada tipo de documento tem uma sequência de assinaturas, ou seja cada VD usa a assinatura da VD anterior como parte das informações a assinar, que pode não ser a do último documento criado no sistema (imagina que crias uma VD, depois uma factura e depois outra VD; a segunda VD usa a assinatura da 1º e não a da factura).

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.