打开kettle的资源库配置文件respositories.xml,可以看到数据库的连接密码是加密的。
例如
<username/>
<password>Encrypted sasdfere13rrrf</password>
加解密由org.pentaho.di.core.encryption.Encr负责,算法非常简单:
public static final String encryptPassword(String password)
{
if (password==null) return "";
if (password.length()==0) return "";
BigInteger bi_passwd = new BigInteger(password.getBytes());
BigInteger bi_r0 = new BigInteger(SEED);
BigInteger bi_r1 = bi_r0.xor(bi_passwd);
return bi_r1.toString(RADIX);
}
public static final String decryptPassword(String encrypted)
{
if (encrypted==null) return "";
if (encrypted.length()==0) return "";
BigInteger bi_confuse = new BigInteger(SEED);
try
{
BigInteger bi_r1 = new BigInteger(encrypted, RADIX);
BigInteger bi_r0 = bi_r1.xor(bi_confuse);
return new String(bi_r0.toByteArray());
}
catch(