2011-05-09 131 views
0

目前玩liferay,我希望得到用戶名和密碼。解密liferay密碼

我能得到的用戶名和encrpyted密碼,所以我需要解密的密碼 - 我想我可以做到這一點:

Company company; 
    try { 
     company = CompanyUtil.findByPrimaryKey(user.getCompanyId()); 
     password = Encryptor.decrypt(company.getKeyObj(), password); 
    } catch (NoSuchCompanyException e) { 
     e.printStackTrace(); 
    } catch (SystemException e) { 
     e.printStackTrace(); 
    } catch (EncryptorException e) { 
     e.printStackTrace(); 
    } 

然而,這與encryptorexception即返回:

com.liferay.util.EncryptorException: com.liferay.util.EncryptorException: javax.crypto.IllegalBlockSizeException: Input length must be multiple of 8 when decrypting with padded cipher 

我也發佈在liferay論壇上,但希望有人在這裏也可以幫助 - 我目前正在嘗試以鉤子的形式做到這一點,一個portlet會是一個更好的主意嗎?

很多謝謝

回答

0

我以爲(或希望)Liferay使用哈希來加密密碼。在這種情況下,您必須使用相同的方法加密給定的密碼,並檢查保存的密碼。

解密密碼的目的是什麼?這決定了你將在哪個地方實現這個鉤子或portlet。

+0

我想得到它,所以我可以解析它到我的kerberos的kerberised SSO – odtf 2011-05-09 14:59:48

+0

在這種情況下,我認爲要走的路將採取由用戶輸入的密碼和Kerberos服務器進行身份驗證。不要試圖解密這些密碼。您應該能夠實現您自己的AutoLogin類並將其插入到LR身份驗證鏈中。 (正如你剛纔說的你剛開始使用Liferay一樣:你有一個現有的基於Kerberos的基礎架構嗎?否則我會建議嘗試CAS或Liferay已經支持的其他SSO技術)。 – Dirk 2011-05-09 15:42:27

+0

是的,我目前有一個基礎Kerberos的基礎設施 - 我嘗試過,並嘗試獲取用戶輸入的密碼失敗......也許我做錯了 - 任何想法/幫助指南來做到這一點? 爲你的幫助至今歡呼 – odtf 2011-05-09 15:45:37

1

Liferay是哈希密碼,所以沒有「解密」密碼的概念:這在技術上是不可能的。你可以強制一些匹配的部分,但不能解密它。

查看更深入的討論in the Liferay message boards。 (這太複製/粘貼在這裏)

如果您還在那裏發佈了您的問題,請發佈一個鏈接從您的帖子(和/或副版本),如果您的線程增加了討論的價值