java - .NET 使用哪种哈希算法,我是否能够使用 java 对这些哈希值执行密码检查

标签 java asp.net hash mule

我有一个使用 ASP.NET 2.0 构建的旧版 Web 应用程序。此应用程序中实现了一个用户注册过程,用户名和密码存储到 SQL Server 数据库中。密码按照预期进行哈希处理。虽然我不是一个非常有经验的 .NET 程序员,但我猜想 System.Security.Cryptography 程序集可以完成这项工作。

现在我们希望将此用户数据库重用于其他服务(基本上 SAML Identity Proider 是理想的选择)。我想使用 Mule ESB 和 Java 代码的组合来完成此操作,但是我是否有机会像 .NET 一样在 java 中对密码进行哈希处理,并在我的用户数据库上检查此哈希值?有人已经这样做了吗?

编辑:我进一步调查了旧版应用程序。我使用密码“stackoverflow”创建了一个“Testuser”。在数据库中,我有 2 个字段,一个名为“Password”,一个名为“EncryptionToken”。

对于上面的凭据,“stackoverflow”变为

Password: F545C9A2670C9C261C657CC48AA8F91F284DD824B8142466DB7370FF4A30D741 SecurityToken: tn+nms4=

保存用户密码的代码如下所示:

public void SetEncryptedPassword(Account user, string password)
{
    user.SecurityToken = CryptoProviderBase.GenerateRandomSalt();
    var hash = new SHA256HashBuilder { Text = password, Salt = user.SecurityToken };
        user.Password = hash.CalculateHash();
}

因此,哈希值似乎是带有随机盐的 SHA256 哈希值,存储在 SecurityToken 中。

不幸的是,我无法(不知道)如何在 Java 中重现这一点。你能给我一些提示吗?

最佳答案

我想我已经通过深入研究(反编译)一些代码并思考和尝试自己解决了这个问题。有一个online SHA-256 calculator我用的是这个。

如果我输入 SecurityToken/Salt首先输入“tn+nms4=”,然后在其后面附加密码“stackoverflow”。然后散列这个。我准确地得到了存储在数据库中的哈希值。

看起来遗留应用程序中使用的加密提供程序的实现根本不是普通的 .NET,而更有可能是自行设计的。

关于java - .NET 使用哪种哈希算法,我是否能够使用 java 对这些哈希值执行密码检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22007527/

相关文章:

java - 带邻域搜索的子集总和 - java

Java Spring - 动态生成的 csv 文件下载响应挂起

java - Class<T extends AnotherClass> 方法泛型

asp.net - 无需安装即可部署 Expression Encoder SDK

hash - HTTP 请求的真实性和完整性

java - 获取 JCE KeyGenerators 所有可能的 key 大小

c# - 为什么我的 ASP.NET 部署服务器不使用配置的环境名称?

asp.net - MessageBox.Show() 在 ASP.NET 中不起作用

Python 与 Go 哈希差异

c++ - 为什么 hash<const char*> 适用于字符串而不适用于字符串变量?