在ASP.net中复制PHPBB密码哈希c#

前端之家收集整理的这篇文章主要介绍了在ASP.net中复制PHPBB密码哈希c#前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前正在使用PHPbb 3.0.8.它拥有3,000名用户和约60,000个帖子.我正在将论坛改为另一个,用经典的ASP编写(我知道人们会对此不赞成,但我有充分的理由).

我的网站是用ASP.net编写的.经典的ASP论坛有一个连接它的API.我把所有这些都设置好了,它运行正常.我已经写了自己的登录表单.

我想复制所有用户帐户.目前的论坛有表:

Username | Password |  Hash  |  Salt

我已经覆盖了经典的ASP哈希技术,现在使用ASP.net Security.SHA1哈希.密码存储为SHA1(rawpassword salt).

我的计划是将新字段存储在当前字段旁边:

UserID | Password |  Hash  |  Salt  |  PHPBBHash

用户登录时,如果设置了PHPBB hashh字段,则会使用PHPBB哈希哈希密码.然后,如果登录成功,它将删除PHPBBHash字段,并创建当前系统哈希值.这样,这是从PHPBB到新论坛的平稳过渡,没有人丢失他们的帐户.

我的问题是,给定PHPBB哈希,用户名和密码,在ASP.net中c#如何验证PHPBB哈希?它是如何计算的?

我担心的是经典的ASP哈希函数声称是SHA1,但它产生了与Securiy.SHA1不同的结果.

编辑

如果有人能给我一个明确的解决方案,我会对此表示赏心悦目,我很欣赏链接到资源的答案,但我仍然在努力理解它.

测试用例

原始密码:

blingblangblaow222

PHPBB3数据库中:

username: Tom
username_clean: tom
user_password: $H$9ojo08A3LuhnkXR27p.WK7dJmOdazh0
user_passchg: 1301433947
user_form_salt: 637f480dfdab84ef

使用Vishalgiris回答的示例代码,我们这样做:

PHPBB.PHPBBCryptoServiceProvider cPHPBB = new PHPBB.PHPBBCryptoServiceProvider();
string remoteHash = "$H$9ojo08A3LuhnkXR27p.WK7dJmOdazh0";
bool result = cPHPBB.PHPbbCheckHash("blingblangblaow222",remoteHash);
Response.Write("<BR><BR><BR>" + result);

这实际上返回true.超!但有谁知道为什么这有效?我很困惑,它似乎根本不考虑盐.

解决方法

好像你的答案是 here at phpBB community,但是你已经知道,它是盐渍哈希所以你需要使用链接中提供的功能来检查你的密码,因为哈希会随着生成而改变.

如果您已经尝试过链接中提供的代码,请忽略.

希望能帮助到你…

另一个选择是创建单独的PHP页面/服务,进行密码散列或散列验证.创建使用“PHPbb_hash”函数并检查使用“PHPbb_check_hash”,这些函数可以通过页面或服务公开给ASP或ASP.NET.

猜你在找的asp.Net相关文章