herberto Posted March 15, 2022 at 10:07 AM Report Share #625563 Posted March 15, 2022 at 10:07 AM Bom dia, estou a pensar evoluir uma aplicação em ambiente windows para a web, linux, com php + mysql para gerar a chave hash em windows uso: openssl dgst -sha1 -sign ChavePrivada.pem -out Registo1.sha1 Registo1.txt openssl enc -base64 -in Registo1.sha1 -out Registo1.b64 -A como efetuar a mesma operação em php? Link to comment Share on other sites More sharing options...
M6 Posted March 15, 2022 at 02:29 PM Report Share #625565 Posted March 15, 2022 at 02:29 PM 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 More sharing options...
washalbano Posted March 15, 2022 at 02:34 PM Report Share #625566 Posted March 15, 2022 at 02:34 PM Em php, vc pode gerar hash de uma string assim: $hashedString = sha1('sua-string'); veja em: https://www.php.net/sha1 E em base64 assim: $hashedString = base64_encode('sua-string'); veja em: https://www.php.net/base64-encode Link to comment Share on other sites More sharing options...
herberto Posted March 15, 2022 at 03:48 PM Author Report Share #625567 Posted March 15, 2022 at 03:48 PM Obrigada, oportunamente vou testar Link to comment Share on other sites More sharing options...
Rui Carlos Posted March 15, 2022 at 04:55 PM Report Share #625569 Posted March 15, 2022 at 04:55 PM 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...). Rui Carlos Gonçalves Link to comment Share on other sites More sharing options...
herberto Posted March 22, 2022 at 02:54 PM Author Report Share #625601 Posted March 22, 2022 at 02:54 PM 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= 1 Report Link to comment Share on other sites More sharing options...
jbscoelho Posted December 12, 2023 at 06:07 PM Report Share #632394 Posted December 12, 2023 at 06:07 PM @herberto, no seu exemplo não vejo onde está a ser usada a chave pública, apenas a chave privada. Pode ajudar a esclarecer-me? Obrigado. Jorge Bruno Coelho Product Owner | Business Analyst | Coach Link to comment Share on other sites More sharing options...
MentorDuncan Posted December 13, 2023 at 04:28 AM Report Share #632400 Posted December 13, 2023 at 04:28 AM sugiro que testes: https://get.localhost.direct Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now