Jump to content

Criar Chave Hash pelo PHP - Fciheiro SAFT para AT


herberto

Recommended Posts

Não sei se compreendi bem a questão.
A chave gerada em Windows pode ser gerada da mesma forma em Linux, é ao nível do sistema operativo e não da linguagem de programação.
No entanto, se o problema é executar comandos externos através do PHP, é ver as funções exec(), shell_exec() system() e afins.
Atenção que a execução de comandos externos via PHP pode não ser linear devido a restrições de segurança, tipicamente só estão disponível em CLI sendo necessário ativá-las para outros modos.

10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Link to comment
Share on other sites

Há uma biblioteca OpenSSL para PHP, que deve suportar a generalidade das funcionalidades da linha de comandos.  Por exemplo, penso que a função openssl_sign deve permitir fazer algo equivalente ao teu primeiro comando (e atenção que o primeiro comando não está simplesmente a gerar um hash SHA1...).

Link to comment
Share on other sites

Boa tarde,

já consigo obter o registo assinado com a sequência de 4 supostos documentos , neste caso 4 Notas de Crédito, eis o exemplo:

Cada uma deve gerar a sua chave publica e privada.

<?php
//$hash_privada = "private_key.pem";

//Chave exemplo
$hash_privada = <<<EOD
-----BEGIN RSA PRIVATE KEY-----
MIIBOgIBAAJBANDiE2+Xi/WnO+s120NiiJhNyIButVu6zxqlVzz0wy2j4kQVUC4Z
RZD80IY+4wIiX2YxKBZKGnd2TtPkcJ/ljkUCAwEAAQJAL151ZeMKHEU2c1qdRKS9
sTxCcc2pVwoAGVzRccNX16tfmCf8FjxuM3WmLdsPxYoHrwb1LFNxiNk1MXrxjH3R
6QIhAPB7edmcjH4bhMaJBztcbNE1VRCEi/bisAwiPPMq9/2nAiEA3lyc5+f6DEIJ
h1y6BWkdVULDSM+jpi1XiV/DevxuijMCIQCAEPGqHsF+4v7Jj+3HAgh9PU6otj2n
Y79nJtCYmvhoHwIgNDePaS4inApN7omp7WdXyhPZhBmulnGDYvEoGJN66d0CIHra
I2SvDkQ5CmrzkW5qPaE2oO7BSqAhRZxiYpZFb5CI
-----END RSA PRIVATE KEY-----
EOD;
/*
$assinar="2021-12-10;2021-12-10T10:34:09;NC C/1;8.40;";
//$fp=fopen($hash_privada,"r");
$priv_key=fread($fp,filesize($hash_privada));
fclose($fp);
$pkeyid = openssl_get_privatekey($priv_key);
openssl_sign($assinar,$signature,$pkeyid,"sha1");
echo base64_encode($signature);
*/
/*
$hashedString = sha1("2021-12-10;2021-12-10T10:34:09;NC C/1;8.40;");
$hashedString64 = base64_encode($hashedString);
echo $hashedString64;
*/

// $data is assumed to contain the data to be signed
$data="2021-12-10;2021-12-10T10:34:09;NC C/1;8.40;";
// fetch private key from file and ready it
$pkeyid = openssl_pkey_get_private($hash_privada);

// compute signature
openssl_sign($data, $signature, $pkeyid,"sha1");
$registo1= base64_encode($signature);
echo $registo1;
$data2="2021-12-11;2021-12-11T11:34:09;NC C/2;9.40;".$registo1;
openssl_sign($data2, $signature, $pkeyid,"sha1");
$registo2= base64_encode($signature);

echo "<br>";
echo $registo2;

$data3="2021-12-12;2021-12-12T12:34:09;NC C/3;1.40;".$registo2;
openssl_sign($data3, $signature, $pkeyid,"sha1");
$registo3= base64_encode($signature);

echo "<br>";
echo $registo3;

$data4="2021-12-14;2021-12-14T12:50:09;NC C/4;2.50;".$registo3;
openssl_sign($data4, $signature, $pkeyid,"sha1");
$registo4= base64_encode($signature);

echo "<br>";
echo $registo4;


// free the key from memory
//$result=openssl_free_key($pkeyid);

// A ideia

//****************************************

// RESULTADO COM A MINHA CHAVE

QmlbSJxrc7OJm0VC+OLa2ZqTGS1UZMBtb9lyDoi07+0VbRlbOkMxegDtopLA69ho+TbIkwL+Ph13tflieSX/NNtLS3LvLxmQS2WiXz+HkwDZWfPH7vrErSGeZ2NKa6emre0z8LqsCwOY7yNbVnKDG6o/Jbyq0x9w5W/5pdGNBfM=
eSMRS+HBhc6KQ4ZYMXEzshygET2LgTM52GThlmJQYYeB6quDhuxvR9dncvzckbHmAN/fmV7p2d1O3ntsHbQZ+Va+6agaX5TH5JhMAGUeapx2LgdMe0utbhn1HzCOEtu5kg2jdTdnC0aK4TPRm07VihRPWcFFPa4v/tvOkd2H91Y=
U1iinvK6AmfhnNzYJ+8BpHWphEBFd9MhZGj79HWyBt16tGgc2nlpsysql2s0RSWlyo2ZWGmgaKQYga9PMpAZ3rCHg6SPLriwRrK3BLibxj65aXgwuF7bSfeBXOmuy8Js+SOozP40nsW6SXx2gBK4ODRm1saB5CyAwIfWxjkoYN4=
1gbIgJcyPj8LI9M9TpeLToID0Rt9TnBQwTddeQJbvrAQvaWNYyuXiory/BKfORLCNwOa6zoar9G68STeSiBxB870s0wgzWiQA7oQ3GVq8akBm6+UKLURnJolpEr2QmRn1V42JmDdKeUQpXxlw+3bAE3Jbjq1aKZv4VDzSFIMQL4=

  • Vote 1
Link to comment
Share on other sites

  • 1 year later...

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
×
×
  • 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.