如何解密Pentaho中的数据库密码连接?

问题描述 投票:0回答:2

我忘记了 pentaho 转换中使用的密码。当我打开 kdb 或 ktr 文件时,我看到的只是一个加密值,如

Encrypted xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz

我想找出原始值。我怎样才能做到这一点?

cryptography pentaho
2个回答
0
投票

下面的代码可以解密任何加密的字符串。您可以使用

Modified JavaScript Value

var password = org.pentaho.di.core.encryption.Encr.decryptPassword(encryptedValue);

0
投票

Pentaho 使用基本的 XOR 运算和密钥对密码进行加密。默认密钥为

0933910847463829827159347601486730416058
,但可以通过设置常量
KETTLE_TWO_WAY_PASSWORD_ENCODER_SEED
来更改。

以下 Java 代码将使用默认密钥解密编码的密码:

import java.math.BigInteger;

public class Main
{
        public static void main(String[] args) {
                String envSeed = "0933910847463829827159347601486730416058";
                String encrypted = "xyzxyzxyzxyzxyzxyzxyzxyzxyzxyzxyz";
                int RADIX = 16;

                BigInteger bi_confuse = new BigInteger( envSeed );
                BigInteger bi_r1 = new BigInteger( encrypted, RADIX );
                BigInteger bi_r0 = bi_r1.xor( bi_confuse );

                System.out.println(new String( bi_r0.toByteArray() ));
        }
}
© www.soinside.com 2019 - 2024. All rights reserved.