更新:
收到的答复如下:
我想使用我的论坛凭证(我正在使用Invision )创建一个分开的页面,所以我开始研究如何使用密码。
主要在members表上有members_pass_hash和members_pass_salt表,加密过程如下:
/**
* Generates a compiled passhash.
* Returns a new MD5 hash of the supplied salt and MD5 hash of the password
*
* @param string User's salt (5 random chars)
问:为什么这些在输出上不匹配?
所以我一直在追踪一个让我头疼的问题,我想不出是什么原因导致了传递一个MD5哈希的简缩版本,这个版本是用FILTER_SANITIZE_STRING实现的。
我知道我清理md5散列似乎很奇怪,但是这个类不仅是以这种方式使用的,而且我试图避免使用多个方法来做相同的事情。
class test {
public function select($match,$debug) {
$match1 = filter_var($match, FILTER_SANITIZE_STRING);
if ($debug == '1')
我正在尝试将md5校验和存储在sqlite表中,并且它几乎一直运行良好(用于数万个文件)。但是对于一个特定的文件,事情会变得很奇怪。在我看来,下面的例子中的校验和有一些“神奇”的性质,混淆了sqlite。
SQLite version 3.6.22
Enter ".help" for instructions
sqlite> CREATE TABLE files (md5 STRING UNIQUE NOT NULL);
sqlite> INSERT INTO files (md5) values ("8534112824210843669373e91687
免责声明:有许多类似的问题,但我正在寻找一个实际的建议,而不是只是一般的原则。另外,可以随意指出“理想”算法的实现(PHP会很好;),但是请提供具体细节(它是如何工作的)。
计算存储在数据库中的密码的散列字符串的最佳方法是什么?我知道我应该:
用盐
多次迭代散列过程(的哈希链)
我正在考虑使用这样的算法:
x = md5( salt + password);
repeat N-times:
x = md5( salt + password + x );
我相信这是相当安全的,但有几个问题在脑海中浮现:
在salt中包含用户名会有好处吗?
我决定对所有用户使用普通