openfire ofuser 密码加解密


openfire的用户名密码存在ofuser表中,虽然原表中存在两个字段plainPassword和encryptedPassword,但默认情况下,of只会保存加密后的密码,即encryptedPassword,而明码plainPassword是置空的。


那怎么通过encryptedPassword获得plainPassword。实际上,of的加密策略是双向加密的,知道密钥后是可以将密文转为明文的。那怎么解密哪。答案就是openfire通过org.jivesoftware.util.Blowfish.java类来实现的加解密。


在openfire的源代码中可以获取到org.jivesoftware.util.Blowfish.java,使用的是Blowfish的encryptString(String password)和decryptString(String encryptedString)两个方法执行加解密。然后单这样是无法解密的,因为还需要一个密钥passwordKey,这密钥是通过new Blowfish(String passwordKey)注入到类中。


passwordKey存在于openfire的数据库表ofproperty中,其中就有passwordKey的值,这是openfire安装时自动生成的。

如:



注入密钥后,便可以进行加解密操作。具体代码如下:

 Blowfish bf = new Blowfish("r2m5aQ3d5py8Bo5");
 String encryptedString = bf.decrypt("f90e8b46b1014fb696ec385e48fcabbdd425ee99e087dde8");
 System.out.println(encryptedString);//will

综上,即可。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值