如何使用 Salt 和 SHA-256 解密存储在 WSO2 身份服务器中的密码

How to decrypt the password that are stored in WSO2 identity Server with Salt and SHA-256

我想查看存储在 CARBON_DB..UM_USER table 中的密码。 密码使用盐值列加密存储。 我不想更改加密,但想在 SQL 服务器中查看密码。

如果它是单向函数,当我们调用 Authenticate 函数并验证请求中传递的用户名密码是否有效时,WSo2 如何能够使用它?

或者它会帮助我,WSO2 如何根据 UM_SALT_VALUE.

生成 UM_USER_PASSWORD 列

此 [1] 是代码部分,它将提供的密码与存储的哈希值进行比较。通过查看此逻辑,您可能能够理解它是如何发生的。检查 preparePassword()[2] 方法以了解加盐哈希是如何发生的。

[1] https://github.com/wso2/carbon-kernel/blob/4.5.x/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/jdbc/JDBCUserStoreManager.java#L1242

[2] https://github.com/wso2/carbon-kernel/blob/4.5.x/core/org.wso2.carbon.user.core/src/main/java/org/wso2/carbon/user/core/jdbc/JDBCUserStoreManager.java#L2628

以下是加密工作原理的答案,

//Password+Salt value

String password = "passwordb7nujixCJvoAA7AZkLfe0A==";
MessageDigest dgst = MessageDigest.getInstance("SHA-256");
byte[] byteValue = dgst.digest(password.getBytes());
password = Base64.encode(byteValue);
System.out.println("password::"+password);