2011-05-09 135 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。 (这太复制/粘贴在这里)

如果您还在那里发布了您的问题,请发布一个链接从您的帖子(和/或副版本),如果您的线程增加了讨论的价值