一、背景概述
由于操作不熟或者工作交接等各方面的原因,K友们在使用Kettle数据库资源库时存在忘记登录密码的情况。本文通过程序的办法,解决密码找回的问题。
二、解决办法
1、原理
Kettle在创建数据库资源库时,会创建r_开头的约40多个表。其中r_user表存储的就是资源库账号信息。r_user表包含id_user、login、password、name、description、enable六个字段,字段含义都是很容易猜到的。比较重要的是login字段,存储了登录用户名;password字段存储了密码。由于密码被加密存储,所以不能通过数据库表格的查询直接得到密码(如下图所示)。
2、方案
解决问题的办法,只有将密码字段的值取出后进行解密。本文通过一个小程序,可以把加密后的字符串进行解密。以下为全部代码:
public class PasswordTool {
public static void main(String[] args) {
try {
// 初始化Kettle环境
KettleEnvironment.init();
//找到R_USER表中的加密字符串
//设置到enPwd局部变量中
String enPwd="2be98afc86aa7f2e4cb79ce71da9fa6d4";
String dePwd = Encr.decryptPassword(enPwd );
} catch (KettleException e) {
e.printStackTrace();
}
}
}
下图为执行结果。
三、总结
本文通过代码的方法,解决了Kettle资源库密码找回的问题。读者只需拷贝代码,并将密码字符串替换,即可完成密码解密功能。
领取专属 10元无门槛券
私享最新 技术干货