Il linguaggio di programmazione Delphi
 

Cifratura Pincode sistema tessera sanitaria

Luigi Siciliano 7 Feb 2017 17:21
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 8 Feb 2017 14:29
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 ******* di
origine (temporaneo) che contiene di volta in volta il codice fiscale o il
pincode

Il target lo imposto su un ******* 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 8 Feb 2017 15:03
Il 08/02/2017 14.29, alessandrob ha scritto:
>
> Eseguo dal mio programma una chiamata a openssl con parametri un ******* 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 21 Feb 2017 09:09
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 23 Feb 2017 18:47
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

Links
Giochi online
Dizionario sinonimi
Leggi e codici
Ricette
Testi
Webmatica
Hosting gratis
   
 

Il linguaggio di programmazione Delphi | Tutti i gruppi | it.comp.lang.delphi | Notizie e discussioni delphi | Delphi Mobile | Servizio di consultazione news.