Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.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
在C#中散列密码,就像在CakePHP中一样_C#_Cakephp_Cakephp 3.0_Password Encryption - Fatal编程技术网

在C#中散列密码,就像在CakePHP中一样

在C#中散列密码,就像在CakePHP中一样,c#,cakephp,cakephp-3.0,password-encryption,C#,Cakephp,Cakephp 3.0,Password Encryption,这可能不是这个问题的最佳标题,但我现在要解释一下 基本上,我用CakePHP创建了一个网站,在用户注册和登录时使用DefaultPasswordHasher散列用户密码 这是我用来散列密码的代码: protected function _setPassword($password) { return (new DefaultPasswordHasher)->hash($password); } 之后,我决定创建一个带有C#的软件,要求用户登录 该程序使用与CakePHP网站相同的

这可能不是这个问题的最佳标题,但我现在要解释一下

基本上,我用CakePHP创建了一个网站,在用户注册和登录时使用DefaultPasswordHasher散列用户密码

这是我用来散列密码的代码:

protected function _setPassword($password)
{
    return (new DefaultPasswordHasher)->hash($password);
}
之后,我决定创建一个带有C#的软件,要求用户登录

该程序使用与CakePHP网站相同的数据库,这意味着要验证输入密码文本框的密码是否与数据库中的密码匹配,我必须使用与
DefaultPasswordHasher
使用的相同加密对其进行散列。问题是我不知道什么类型的加密
DefaultPasswordHasher
,也不知道如何将密码输入散列到C#中的文本框中


谢谢您的帮助:)

您需要以完全相同的方式对密码进行散列吗?我不知道CakePHP使用什么算法,但您可能想看看
System.Security.Cryptography.SHA256CryptoServiceProvider
,我认为不需要以同样的方式对密码进行散列。只要我能够使用DefaultPasswordHasher创建的密码对C#程序中的用户进行身份验证,一切都很好。为什么不在CakePHP项目中创建一个API并在那里执行哈希呢?我的意思是,除非你确切知道它的用途,否则很难创建相同的算法。嗯,这是一个很好的建议。我想我会进一步调查一下。谢谢:)如果你想知道CakePHP做什么,只要看看,默认密码哈希器使用PHPs和
password\u default
算法,目前是bcrypt。