gpt4 book ai didi

java - 将散列或加密密码发送到 AS400 jdbc 连接

转载 作者:行者123 更新时间:2023-11-30 11:31:29 25 4
gpt4 key购买 nike

创建数据库连接时需要发送散列或加密的密码,详见下文:

我们有一个连接到 DB2 AS400 数据库的 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
...

这个 .properties 文件存在于应用程序/网络服务器的文件系统中。

我有一个要求是存储哈希密码而不是直接存储密码,这样如果有人查看文件内容就无法知道真正的密码是什么。

像这样使用 SHA:

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

必须有一种方法可以告诉 AS400 所发送的密码是经过哈希处理的。

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

新发现:

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

...用户 ID 和关联的加密密码在 DDM 连接请求中发送。加密支持必须在两个系统上可用,才能使用此身份验证方法...摘自 http://publib.boulder.ibm.com/infocenter/iseries/v5r3/topic/cl/chgrdbdire.htm

所以好像可以在AS400端配置,但是没有提到使用的加密算法和jdbc驱动是否支持。

最佳答案

IBM Toolbox for Java JDBC properties 中没有提及属性接受特殊的散列/加密密码。

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

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

关于java - 将散列或加密密码发送到 AS400 jdbc 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17116178/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com