Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Cifratura Pincode sistema tessera sanitaria

366 views
Skip to first unread message

Luigi Siciliano

unread,
Feb 7, 2017, 11:21:09 AM2/7/17
to
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

unread,
Feb 8, 2017, 8:29:03 AM2/8/17
to
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

unread,
Feb 8, 2017, 9:03:22 AM2/8/17
to
Il 08/02/2017 14.29, alessandrob ha scritto:
>
> 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
>
Io ho provato direttamente da riga di comando ma, il risultato della
cifratura non viene digerito dal webservice perché ritorna una exception
"carattere non valido nel contenuto di testo".

>
> So benissimo che non è una soluzione ottimale ma avevo fretta di risolvere per il cliente finale vista la scadenza dell'invio per il 2016
>

Visto l'approssimarsi della scadenza ho fatto inserire i documenti,
manualmente, uno alla volta dal sito web di tessera sanitaria.

Grazie di tutto.

Ciao.

Luigi Siciliano

unread,
Feb 21, 2017, 3:09:50 AM2/21/17
to
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

unread,
Feb 23, 2017, 12:47:26 PM2/23/17
to
Il giorno martedì 21 febbraio 2017 09:09:50 UTC+1, Luigi Siciliano ha scritto:
> Risolto:
> *è 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

unread,
Mar 27, 2021, 3:07:26 PM3/27/21
to
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

Leo Rizzi

unread,
Mar 27, 2021, 3:28:25 PM3/27/21
to
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

Luigis

unread,
Mar 29, 2021, 3:04:51 AM3/29/21
to
Il 27/03/2021 20:07, Leo Rizzi ha scritto:
>
> 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
>
>

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

unread,
Mar 29, 2021, 3:32:20 AM3/29/21
to
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




0 new messages