Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何实现ASP.NET核心身份框架&x27;java中的密码哈希器_Java_C#_Asp.net_Asp.net Core - Fatal编程技术网

如何实现ASP.NET核心身份框架&x27;java中的密码哈希器

如何实现ASP.NET核心身份框架&x27;java中的密码哈希器,java,c#,asp.net,asp.net-core,Java,C#,Asp.net,Asp.net Core,我正在从事一个学校项目,其中我们有一个ASP.NET核心web应用程序,使用Identity framework为我们的用户提供(他们可以注册和登录),我们还必须开发一个java应用程序,我们还必须使用与ASP.NET核心应用程序(mutual db)相同的用户数据进行注册和登录。我们的问题是,Identity对他们的密码进行散列,为了能够从java应用程序登录或注册,我们必须像Identity那样比较散列或散列。我一直在浏览互联网,但还没有找到明确的答案 现在我了解了ASP.NET核心标识v3

我正在从事一个学校项目,其中我们有一个ASP.NET核心web应用程序,使用Identity framework为我们的用户提供(他们可以注册和登录),我们还必须开发一个java应用程序,我们还必须使用与ASP.NET核心应用程序(mutual db)相同的用户数据进行注册和登录。我们的问题是,Identity对他们的密码进行散列,为了能够从java应用程序登录或注册,我们必须像Identity那样比较散列或散列。我一直在浏览互联网,但还没有找到明确的答案

现在我了解了ASP.NET核心标识v3的使用

带HMAC-SHA256、128位salt、256位子密钥、10000的PBKDF2 迭代

对他们的密码进行哈希运算


我的问题是:在java应用程序中实现相同哈希方法的最佳方法是什么?有没有一个可行的java库,我们可以用来模仿Identity散列密码的方式?还是有更好的方法来解决这个问题?

您应该尝试覆盖.net核心应用程序DI中的IPasswordHasher接口,并在java应用程序中使用相同的逻辑, 作为参考,您可以查看以下内容:


一件事,改变散列的方式将使所有现有用户都被锁定,除非迁移它们,但由于这是一个学校项目,我认为它是一个可接受的结果。< / P>如果我理解正确,你不需要从java应用程序中散列。您只需公开身份应用程序中用于验证密码的操作即可。@Crowcoder感谢您的回答!也许这是个愚蠢的问题,但我如何公开操作呢?您可以构建调用UserManager上的方法的控制器操作。java应用程序将对其进行HTTP调用。@Crowcoder非常感谢您!不,你不应该。如果您在客户端上这样做,那么它会向用户公开安全内部结构。为什么它会向用户公开安全内部结构?你这么说是什么意思?没有密钥就不能散列,如果密钥在用户自己的进程中运行,也不能对用户隐藏密钥。这些事情必须在安全资源(如web服务器)的进程外发生。您知道您可以使用jetbrains rider之类的调试器调试应用程序,并查看默认的IPasswordHasher吗?我考虑到你正在使用的登录和注册用户的应用程序是web服务器,从其他方面看,你是做错了什么。(哦,对不起,你不是问这个问题的人)我假设java应用程序是由用户交互运行的,也许这是一个错误的假设。无论如何,我的观点是,当用户在自己的过程中使用这些秘密时,您不能向用户隐藏这些秘密。当然,你可以调试,源代码不是问题,问题是如何保护你的秘密。