打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
c# – 使用PHP对ASP.NET成员资格中的用户进行身份验证

尝试使用PHP对现有ASP.NET成员资格数据库进行身份验证时,我遇到了一些问题.我在网上搜索过,我发现的现有答案似乎对我不起作用.即:

public static function Hash($password, $salt){  $decodedSalt = base64_decode($salt);  $utf = mb_convert_encoding($password, 'UTF-16LE', 'UTF-8');  return base64_encode(sha1($decodedSalt.$utf, true));}

我认为问题的一部分是密码哈希实际上不是用SHA-1计算的,因为数据库中的值是44个字符长,base64编码的字符串(这意味着输入可能是256位长).我曾尝试使用SHA-256代替SHA-1,但无济于事.我在web.config中找不到一个机器密钥,它可以进一步腌制哈希值,当我在本地运行或在生产服务器上运行时,ASP.NET站点生成相同的哈希值,所以我不知道为什么它们不是不匹配.

Web.config成员资格提供程序:

<add connectionStringName="MySqlMembershipConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" autogenerateschema="true" name="MySqlMembershipProvider" type="MySql.Web.Security.MySQLMembershipProvider, mysql.web" />

应该起作用的示例密码:

$salt = 'Mu1tp8XzfKl8dSTVAZm44A=='; // Straight from the DB$password = 'testing';$expectedHash = 'TQN7m8OWIyBOKVwzegWSUBVq7o7 KWFBc46J B77mLw=' // Straight from the DB// When using the above Hash function with SHA-256 instead of SHA-1$generatedHash = 'rpmTmtBfWoJz71ooQGQUIIyQJKd99qhYxMUI1yda0qE='

思考?知道为什么我的哈希值与数据库中存储的内容不匹配(以及通过ASP.NET站点登录时原因和方式如何)?我已经尝试更换哈希函数,反转密码/盐连接,并在敲击我的计算机时大声喊叫,但这些似乎都没有帮助.

解决方法:

我看了一下你链接到的身份验证问题页面,一个特别的答案引起了我的注意:https://stackoverflow.com/a/4227642/633098.

因为你说使用的算法不再是SHA1,但更可能是SHA256我开始尝试使用HMAC哈希,而不是SHA256.它起初没有用,但后来我尝试使用由密码和盐组成的连接字符串和salt(= key)本身,并且它起作用.

这是我做的简单功能:

function _hash($password, $salt) {    return base64_encode(hash_hmac('sha256', base64_decode($salt) . iconv('UTF-8', 'UTF-16LE', $password), base64_decode($salt), true));}$salt = 'Mu1tp8XzfKl8dSTVAZm44A=='; // Straight from the DB$password = 'testing';var_dump(_hash($password, $salt));

Resulting hash: TQN7m8OWIyBOKVwzegWSUBVq7o7 KWFBc46J B77mLw=

来源:https://www.icode9.com/content-1-266001.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
哈希算法在密码加密存储中的应用
什么叫给密码“加盐”?如何安全的为你的用户密码“加盐”?
加盐 MD5 SHA1 安全
Hashing Java
从新浪微博和MySQL的密码保护机制谈HTTPS/SSL的必要性
HashTab 5.1.0.23
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服