Java 将哈希或加密密码发送到AS400 jdbc连接

Java 将哈希或加密密码发送到AS400 jdbc连接,java,spring,jdbc,ibm-midrange,Java,Spring,Jdbc,Ibm Midrange,创建db连接时需要发送哈希或加密密码,请参阅以下详细信息: 我们有一个连接到DB2AS400数据库的Spring应用程序。我们目前正在使用配置文件(.properties)来存储连接细节,Spring在上下文创建阶段读取这些文件并相应地创建数据源 ... database.driverClassName=com.ibm.as400.access.AS400JDBCDriver database.url=jdbc:as400:<host>:naming=sql;libraries=*L

创建db连接时需要发送哈希或加密密码,请参阅以下详细信息:

我们有一个连接到DB2AS400数据库的Spring应用程序。我们目前正在使用配置文件(.properties)来存储连接细节,Spring在上下文创建阶段读取这些文件并相应地创建数据源

...
database.driverClassName=com.ibm.as400.access.AS400JDBCDriver
database.url=jdbc:as400:<host>:naming=sql;libraries=*LIBL,...;transaction isolation=none

database.username=<user>
database.password=<password>

database.initialPoolSize=2
database.maxPoolSize=5
...
必须有一种方法告诉AS400正在发送的密码是散列的

在我的研究中,我发现AS400使用库QSYS中的索引QSYUPTBL存储密码,该库能够使用DES或SHA哈希算法。因此,它将加密接收到的密码,并将生成的哈希值与存储在索引中的哈希值进行比较。但是,有没有可能告诉DB的身份验证过程希望密码被散列并直接进行比较

新发现:

IBM的文档中提到了一个关键字:RMTAUTMTH,用于设置远程身份验证方法,在该参数中使用*加密值将激活用户id和密码中的加密:

…在DDM连接请求时发送用户ID和相关加密密码。要使用此身份验证方法,两个系统上都必须提供加密支持。。。摘自


因此,它似乎可以在AS400端进行配置,但没有提到所使用的加密算法以及jdbc驱动程序是否支持它。

中没有提到接受特殊哈希/加密密码的属性

您必须在应用程序中管理密码的哈希/加密,并将其作为明文提供给JDBC连接

JDBC连接的
secure
属性可用于强制与AS/400建立SSL连接(假设启用了SSL),以确保应用程序和数据库之间的所有数据都加密

...
database.password=5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8
...