`
cleaneyes
  • 浏览: 343476 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Kettle数据库连接密码的加密

阅读更多

打开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(Exception e)
		{
			return "";
		}
	}

 

数据库密码如果需要加密,保存后来会以特定字符开头

public  static final String PASSWORD_ENCRYPTED_PREFIX = "Encrypted ";

 

加密方法,被加一个方法调用

 public static final String encryptPasswordIfNotUsingVariables(String password)
    {
        String encrPassword = "";
        List<String> varList = new ArrayList<String>();
        StringUtil.getUsedVariables(password, varList, true);
        if (varList.isEmpty())
        {
            encrPassword = PASSWORD_ENCRYPTED_PREFIX+Encr.encryptPassword(password);
        }
        else
        {
            encrPassword = password;
        }
        
        return encrPassword;
    }

 

是否加密,由StringUtil的方法决定

public static void getUsedVariables(String aString, List<String> list, boolean includeSystemVariables)
	{
		getUsedVariables(aString, UNIX_OPEN, UNIX_CLOSE, list, includeSystemVariables);
		getUsedVariables(aString, WINDOWS_OPEN, WINDOWS_CLOSE, list, includeSystemVariables);
	}

 

如果密码是使用变量的方法,就不会加密,即%%变量%%和${变量}的方式填写,就不会加密。如果将变量调到Java的系统属性中,打开资源库时,就可以使用。

 

 

分享到:
评论

相关推荐

    kettle连接oracle12C--报错ORA-28040 没有匹配的验证协议.rar

    7. **Kettle的JDBC连接配置**:在Kettle的数据库连接配置中,除了提供正确的URL、用户名和密码,还需根据实际情况填写额外的连接属性,如`useSSL`、`trustServerCertificate`等。 解决"ORA-28040"错误可能需要逐个...

    kettle链接SQL server驱动 sqljdbc

    在Kettle中配置SQL Server数据库连接时,我们需要依赖特定的数据库驱动,这就是SQL JDBC驱动。 SQL JDBC驱动是微软提供的Java Database Connectivity (JDBC) 驱动,使得Java应用程序能够与SQL Server进行交互。有两...

    kettle连接ClickHouse驱动包.rar

    - 在Kettle中,创建新的数据库连接,选择“自定义”类型。 - 指定数据库类型为“ClickHouse”或输入JDBC驱动类名(通常是`ru.yandex.clickhouse.ClickHouseDriver`)。 - 填写JDBC URL(如`jdbc:clickhouse://...

    kettle连接sqlserver用的jtds.jar1.3.1版本,放到kettle lib目录下重启使用

    - **创建数据库连接**:在Kettle的工作台中,通过“创建” -&gt; “数据库连接”来新建一个连接。在弹出的对话框中,选择“Microsoft SQL Server(jTDS)”作为驱动类型。 - **配置连接参数**:输入以下关键信息: ...

    mysql数据库连接驱动包

    MySQL数据库连接驱动包是用于Java应用程序与MySQL数据库交互的关键组件,它遵循JDBC(Java Database Connectivity)标准。在Java编程中,如果你想要访问MySQL数据库,就需要这个驱动包,也称为MySQL Connector/J。...

    mariadb驱动,kettle连接mariadb驱动

    3. **配置数据库连接**:在Kettle的 Spoon 界面中,创建一个新的“数据库连接”步骤。在“类型”下拉菜单中,选择“MariaDB / MySQL”。然后,输入以下必要的连接信息: - 主机名:MariaDB服务器的IP地址或域名。 ...

    解决SQLSERVER数据库驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接问题JAR包

    这个问题通常表明数据库连接在尝试使用SSL进行加密时遇到了障碍,可能影响数据的安全传输和系统的正常运行。为了解决这一问题,我们需要深入了解SSL加密以及如何配置SQL Server和相应的驱动程序。 SSL(Secure ...

    kettle-pdf用户手册

    用户可以通过设置窗口配置数据库连接的详细信息,如服务器地址、端口、用户名和密码等。 **3.3 选项** 除了基本的连接信息外,用户还可以配置其他高级选项,例如SSL加密、字符集编码等。 **3.4 常用数据库连接...

    Kettle从零开始

    Kettle提供了丰富的数据源连接选项,支持多种数据库系统。配置步骤通常包括: 1. **选择数据源类型**:根据实际需求选择数据库类型,如MySQL、Oracle等。 2. **填写连接信息**:输入数据库服务器地址、端口号、...

    kettle ETL 帮助文档&开发手册

    数据库连接设置还支持高级选项,例如连接池配置、SSL加密等,以适应更复杂的应用场景。 ##### 3.4 数据库用法 一旦建立了数据库连接,用户就可以在转换步骤中使用这些连接来执行数据读取或写入操作。 #### 4. SQL...

    连接InterSystems cache数据库jdbc或odbc驱动

    在IT领域,数据库连接是开发过程中的重要环节,特别是对于InterSystems Cache这样的高性能数据库系统。本文将详细讲解如何在Windows环境中使用JDBC(Java Database Connectivity)和ODBC(Open Database ...

    kettlejar包.zip

    【Kettle与MySQL数据库连接】 Kettle,又称为Pentaho Data Integration(PDI),是一款强大的数据集成工具,用于在不同数据源之间进行数据转换和加载。它支持多种数据库系统,包括MySQL。在Kettle中连接到MySQL...

    连接SQL2000驱动包

    7. 安全性:在建立数据库连接时,必须考虑安全性,包括使用安全的连接方式(如SSL加密),限制不必要的权限,以及定期更改登录密码,以防止未授权的访问。 8. 错误处理和调试:在实际应用中,可能会遇到各种连接...

    keetle 各个数据路驱动jar

    在Kettle中,创建数据库连接通常在“数据库连接”步骤中完成,需要填写数据库类型、服务器地址、端口、数据库名、用户名和密码等信息,并指定驱动路径。导入压缩包中的JAR文件至Kettle的类路径,可以确保所有必要的...

    pdi_ce7.1.0.0-12.zip

    5. **Libraries and Plugins**:包含了各种库文件和插件,这些扩展了PDI的功能,支持连接到不同的数据库、文件系统、云服务等。 6. **Samples and Documentation**:提供示例转换和作业,以及用户手册和API文档,...

    Kettle链接mySql 5版本和8版本驱动

    4. 在Kettle的Job或Transformation中创建新的MySQL数据库连接,输入正确的服务器地址、端口、数据库名、用户名和密码。 5. 测试连接以确认配置成功。 通过以上步骤,Kettle用户现在可以利用这两个驱动来访问和操作...

    Kettle初学者教程 自学版

    数据库连接是Kettle中最基础的功能之一,它允许用户轻松地与各种类型的数据库交互。 **3.2 设置窗口** 在Spoon中,可以通过简单的图形界面来设置数据库连接。用户需要填写数据库的URL、用户名和密码等信息。 **...

Global site tag (gtag.js) - Google Analytics