Tom*_*len 7 c# asp.net hash phpbb
我现在正在使用phpbb 3.0.8.它拥有3,000名用户和约60,000个帖子.我正在将论坛改为另一个,用经典的ASP编写(我知道人们会对此不赞成,但我有充分的理由).
我的网站是用ASP.net编写的.经典的ASP论坛有一个连接它的API.我把所有这些都设置好了,它运行正常.我已经写了自己的登录表单.
我想要复制所有用户帐户.目前的论坛有表:
Username | Password | Hash | Salt
Run Code Online (Sandbox Code Playgroud)
我已经覆盖了经典的ASP哈希技术,现在使用ASP.net Security.SHA1哈希.密码存储为SHA1(rawpassword + salt).
我的计划是将新字段存储在当前的字段旁边:
UserID | Password | Hash | Salt | PHPBBHash
Run Code Online (Sandbox Code Playgroud)
当用户登录时,如果设置了PHPBB hashh字段,则使用PHPBB哈希散列密码.然后,如果登录成功,它将删除PHPBBHash字段,并创建当前系统哈希值.这样,这是从PHPBB到新论坛的平稳过渡,没有人丢失他们的帐户.
我的问题是,给定PHPBB哈希,用户名和密码,在ASP.net中c#如何验证PHPBB哈希?它是如何计算的?
我担心的是经典的ASP哈希函数声称是SHA1,但它产生了不同的结果Securiy.SHA1.
如果有人能给我一个明确的解决方案,我会对此表示赏心悦目,我很欣赏链接到资源的答案,但我仍然在努力理解它.
原始密码:
blingblangblaow222
Run Code Online (Sandbox Code Playgroud)
在PHPBB3数据库中:
username: Tom
username_clean: tom
user_password: $H$9ojo08A3LuhnkXR27p.WK7dJmOdazh0
user_passchg: 1301433947
user_form_salt: 637f480dfdab84ef
Run Code Online (Sandbox Code Playgroud)
使用来自Vishalgiris的示例代码回答,我们这样做:
phpBB.phpBBCryptoServiceProvider cPhpBB = new phpBB.phpBBCryptoServiceProvider();
string remoteHash = "$H$9ojo08A3LuhnkXR27p.WK7dJmOdazh0";
bool result = cPhpBB.phpbbCheckHash("blingblangblaow222", remoteHash);
Response.Write("<BR><BR><BR>" + result);
Run Code Online (Sandbox Code Playgroud)
这实际上返回true.超!但有谁知道为什么这有效?我很困惑,它似乎根本不考虑盐.
看来,PHPBB通过验证的密码phpbb_check_hash功能中functions.php的源文件.看起来它通常依赖于_hash_crypt_private做真正的工作.该函数长57行(包括大量的空格),因此将其转换为C#应该相对简单.
小智 3
似乎您的答案就在 phpBB 社区,但是正如您所知,它是加盐哈希,因此您需要使用链接中提供的函数来检查您的密码,因为哈希每次生成都会改变。
如果您已经尝试过链接中提供的代码,请忽略。
希望能帮助到你...
另一种选择是创建单独的 php 页面/服务,以进行密码哈希或哈希验证。创建使用“phpbb_hash”函数并检查使用“phpbb_check_hash”,这些函数可以通过页面或服务暴露给 ASP 或 ASP.NET。
| 归档时间: |
|
| 查看次数: |
2586 次 |
| 最近记录: |