Ciao a tutti!
Il post di oggi tratta un tema che può essere cruciale per chi, come noi, fa progetti di home banking usando la tecnologia Liferay:criptare / decriptare informazioni all'interno delle nostre portlet! :)
Forse non tutti sanno che in Liferay è già presente tutto quello che occorre per utilizzare le funzionalità di algoritmi come AES, Blowfish, DES o Triple DES, e, per di più, con un livello di sicurezza gestito pensando alla caratteristica multi-tenant del portale!
Con questo intendo ovviamente dire che l'encription dei dati usa chiavi diverse a seconda dell'istanza che utilizzate! ;)
Vediamo quindi un po' di codice, per capire come fare la magia! :)
Intanto parliamo del componente di piattaforma che fa tutto.
La classe di oggi si chiama com.liferay.util.Encryptor
e fa ovviamente parte del corredo standard del portale.
Come buona parte delle cose comode di Liferay, infatti, è possibile utilizzare questa utility anche all'interno delle nostre portlet custom ma questo,ça va sans dire, ormai vi è noto! ;)
Questo è il codice per criptare dati:
String encryptedPassword = StringPool.BLANK;
try {
encryptedString =
Encryptor.encrypt(company.getKeyObj(), myString);
} catch (EncryptorException e) {
// FIXME:SEMPRE gestire l'eccezione ;)
}
E questo, invece, quello per decriptare dati:
String decryptedString =
Encryptor.decrypt(company.getKeyObj(),encryptedString);
Mooolto bene!
Penso che la cosa vi risulti anche semplice da capire, vero? :)
Ultimi dettagli..
Come sempre, via portal.properties
ci sono delle property che riguardano la parte di encription.
Nel dettaglio:
company.encryption.algorithm
company.encryption.key.size
La property "company.encryption.algorithm
", ovviamente, permette di configurare l'algoritmo da utilizzare.
I valori ammessi sono: "AES
", "Blowfish
", "DES
", "DESede
".
La property "company.encryption.algorithm
", invece, prevede queste possibilità:
"56
", "128
" (che poi è il default), "168
", "256
", "384
" e "512
".
Ovviamente questa funzionalità è utilizzata all'interno del portale, soprattutto per criptare i dati che vengono salvati nei Cookie
oltre che, ovviamente, per storare la password sul database! ;)
Adesso mi rimetto a giocare con i documenti di progetto, perché per fare un po' di codice, oramai, posso solo sfruttare gli articoli di blog! ;)
Mi raccomando: criptate a più non posso, perché ora non avete proprio più scuse.. ;)