Discussione:
Cifratura Pincode sistema tessera sanitaria
(troppo vecchio per rispondere)
Luigi Siciliano
2017-02-07 16:21:18 UTC
Permalink
Da riga di comando:
opnessl rsautl -encrypt -in CF.txt -out CF.enc -inkey SanitelCF.cer
-certin -pkcs
ottengo una stringa non valida da poterla inviare, esempio:
ିⶉ銲隯ⁿ몱缡폲}违漬丱䫺ꨕ낳켎壕醇胦骭⹝䍅峪苹ᙯ樿躰奄賣ᅞ轢溼쇯䅬圧逛㛏岝濜ﺵ疢ℊᶭ⩕鼨䥀異댲湧냈녝䈙双쏇뵋쇰箱䉠


In rete ho provato a reperire una procedura da utilizzare per la
cifratura ma, ne ho trovate due diverse che però sembrano non funzionare.

La prima, reperita qui <https://github.com/lminuti/Delphi-OpenSSL> non
funge perché restituisce l'errore: Cannot open "openssl" library.
Naturalmente le dll sono nel percorso di sistema (c:\windows\sysWOW64).

La seconda, reperita qui
<http://www.disi.unige.it/person/FerranteM/delphiopenssl/> non funge
perché restituisce un eccezione: "Error accessing SanitelCF.cer on
reading 壕醇胦骭⹝䍅峪苹ᙯ樿躰奄賣ᅞ轢溼쇯䅬圧逛㛏岝濜ygkﺵ疢ℊᶭ⩕鼨."

Ho visto che ci sono una mare di documenti che lamentano "cannot load
openss library" ed il suggerimento è sempre lo stesso: scaricare
Openssl, installarlo ed assicurarsi di copiare le dll nel percorso di
ricerca. Cosa che, naturalmente ho fatto.

Qualcuno può suggerirmi una procedura funzionante?

Grazie.

Ciao.
alessandrob
2017-02-08 13:29:02 UTC
Permalink
Ho avuto anch'io un problema simile
Con la versione di Delhi xe7 funzionava, con la rx1 non voleva saperne di andare
Credo dipenda dalla libreria di interfaccia che non è compatibile

Avendo necessità di risolvere ho optato per questa soluzione, anche se poco pulita:

Ho scaricato il programma openssl e copiato eseguibile e librerie in una cartella del mio programma

Eseguo dal mio programma una chiamata a openssl con parametri un file di origine (temporaneo) che contiene di volta in volta il codice fiscale o il pincode

Il target lo imposto su un file temporaneo che poi vado a leggere per estrapolare il valore cifrato

So benissimo che non è una soluzione ottimale ma avevo fretta di risolvere per il cliente finale vista la scadenza dell'invio per il 2016
Luigi Siciliano
2017-02-08 14:03:33 UTC
Permalink
Questo messaggio potrebbe essere inappropriato. Clicca per visualizzarlo
Leo Rizzi
2021-03-27 19:28:24 UTC
Permalink
Post by alessandrob
Ho avuto anch'io un problema simile
Con la versione di Delhi xe7 funzionava, con la rx1 non voleva saperne di andare
Credo dipenda dalla libreria di interfaccia che non è compatibile
Ho scaricato il programma openssl e copiato eseguibile e librerie in una cartella del mio programma
Eseguo dal mio programma una chiamata a openssl con parametri un file di origine (temporaneo) che contiene di volta in volta il codice fiscale o il pincode
Il target lo imposto su un file temporaneo che poi vado a leggere per estrapolare il valore cifrato
So benissimo che non è una soluzione ottimale ma avevo fretta di risolvere per il cliente finale vista la scadenza dell'invio per il 2016
Ciao,

Saresti così gentile da postarti la chiamata
a openssl con parametri un file di origine (temporaneo) che contiene di volta in volta il codice fiscale o il pincode

sto cercando di seguire lo stesso tuo procedimento

Grazie Mille
Luigi Siciliano
2017-02-21 08:09:50 UTC
Permalink
Risolto:
oltre il comando
opnessl rsautl -encrypt -in CF.txt -out CF.enc -inkey SanitelCF.cer
-certin -pkcs

*è necessario effettuare questo ulteriore passaggio:*
openssl enc -base64 -A -in CF.enc -out CF64.enc

solo così il PinCodeCifrato viene riconosciuto.

Perché anche se le specifiche (Vedi documento versione 2.1 del
19/09/2016, pagina 3) dicono che dalla versione 1.1 si passa da Base64 a
stringa, ciò NON sembra vero.

Grazie a tutti.

Ciao.
alessandrob
2017-02-23 17:47:25 UTC
Permalink
Post by Luigi Siciliano
*è necessario effettuare questo ulteriore passaggio:*
openssl enc -base64 -A -in CF.enc -out CF64.enc
solo così il PinCodeCifrato viene riconosciuto.
Mi segno il suggerimento, anche se al momento il mio sistema sta funzionando ugualmente.
Grazie
Leo Rizzi
2021-03-27 19:07:24 UTC
Permalink
Post by Luigi Siciliano
opnessl rsautl -encrypt -in CF.txt -out CF.enc -inkey SanitelCF.cer
-certin -pkcs
ିⶉ銲隯ⁿ몱缡폲}违漬丱䫺ꨕ낳켎壕醇胦骭⹝䍅峪苹ᙯ樿躰奄賣ᅞ轢溼쇯䅬圧逛㛏岝濜ﺵ疢ℊᶭ⩕鼨䥀異댲湧냈녝䈙双쏇뵋쇰箱䉠
In rete ho provato a reperire una procedura da utilizzare per la
cifratura ma, ne ho trovate due diverse che però sembrano non funzionare.
La prima, reperita qui <https://github.com/lminuti/Delphi-OpenSSL> non
funge perché restituisce l'errore: Cannot open "openssl" library.
Naturalmente le dll sono nel percorso di sistema (c:\windows\sysWOW64).
La seconda, reperita qui
<http://www.disi.unige.it/person/FerranteM/delphiopenssl/> non funge
perché restituisce un eccezione: "Error accessing SanitelCF.cer on
reading 壕醇胦骭⹝䍅峪苹ᙯ樿躰奄賣ᅞ轢溼쇯䅬圧逛㛏岝濜ygkﺵ疢ℊᶭ⩕鼨."
Ho visto che ci sono una mare di documenti che lamentano "cannot load
openss library" ed il suggerimento è sempre lo stesso: scaricare
Openssl, installarlo ed assicurarsi di copiare le dll nel percorso di
ricerca. Cosa che, naturalmente ho fatto.
Qualcuno può suggerirmi una procedura funzionante?
Grazie.
Ciao.
Ciao Anch'io seguendo i suggerimenti al link che hai segnalato
riesco ad ottenere la stringa simile alla tua

壕醇胦骭⹝䍅峪苹ᙯ樿躰奄賣ᅞ轢溼쇯䅬圧逛㛏岝濜ygkﺵ疢ℊᶭ⩕鼨

Non ho capito però coma hai risolto.

io ho utilizzato le "Delphi-OpenSSL-master" scaricate dal link
http://www.disi.unige.it/person/FerranteM/delphiopenssl/
ottenendo una stringa indecifrabile.

Cosa intendi quando scrivi che hai risolto da riiga di comando:

opnessl rsautl -encrypt -in CF.txt -out CF.enc -inkey SanitelCF.cer
-certin -pkcs

*è necessario effettuare questo ulteriore passaggio:*
openssl enc -base64 -A -in CF.enc -out CF64.enc


Grazie Mille
Luigis
2021-03-29 07:04:54 UTC
Permalink
Post by Luigi Siciliano
opnessl rsautl -encrypt -in CF.txt -out CF.enc -inkey SanitelCF.cer
-certin -pkcs
*è necessario effettuare questo ulteriore passaggio:*
openssl enc -base64 -A -in CF.enc -out CF64.enc
Ho creato un file .bat che ho denominato: "fnCodificatore.bat" che
contiene le due linee di comandi ssl che seguono:

openssl rsautl -encrypt -in CF.txt -out CF.enc -inkey SanitelCF.cer
-certin -pkcs
openssl" enc -base64 -A -in CF.enc -out CF64.enc

e che da Delphi richiamo così:

ShellExecute(Handle, 'open', PWideChar(fnCodificatore), nil, nil,
SW_SHOWNORMAL);


Il doppio passaggio è necessario perché i dati passati devono essere
codificati in Base64.

Ciao.
Leo Rizzi
2021-03-29 07:32:19 UTC
Permalink
Post by Luigis
Post by Luigi Siciliano
opnessl rsautl -encrypt -in CF.txt -out CF.enc -inkey SanitelCF.cer
-certin -pkcs
*è necessario effettuare questo ulteriore passaggio:*
openssl enc -base64 -A -in CF.enc -out CF64.enc
Ho creato un file .bat che ho denominato: "fnCodificatore.bat" che
openssl rsautl -encrypt -in CF.txt -out CF.enc -inkey SanitelCF.cer
-certin -pkcs
openssl" enc -base64 -A -in CF.enc -out CF64.enc
ShellExecute(Handle, 'open', PWideChar(fnCodificatore), nil, nil,
SW_SHOWNORMAL);
Il doppio passaggio è necessario perché i dati passati devono essere
codificati in Base64.
Ciao.
Ciao,

Grazie Mille
Nell'attesa che rispondessi sono riuscito a chiamare con ShellExecute
l'eseguibile 'openssl.exe' passandogli le righe di comando
"rsautl -encrypt -in CF.txt -out CF.enc -inkey SanitelCF.cer -certin -pkcs enc -base64 -A -in CF.enc -out CF64.enc"

ShellExecute(Handle, 'open', '.\openssl.exe',
PChar('rsautl -encrypt -in CF.txt -out CF.enc -inkey SanitelCF.cer -certin -pkcs enc -base64 -A -in CF.enc -out CF64.enc'),
nil,SW_NORMAL);

Tutto funziona alla grande
Grazie per la dritta

Ciao

Continua a leggere su narkive:
Loading...