Php Symfony2:如何生成密码的sha512哈希?
我需要比较用户输入的密码是否有效。如何获取sha512加密。我还在我的项目中使用FOSUserBundle。如果您确定需要的是SHA512,请尝试。在您的控制器中,您可以这样做(假设您在Php Symfony2:如何生成密码的sha512哈希?,php,hash,symfony,fosuserbundle,sha512,Php,Hash,Symfony,Fosuserbundle,Sha512,我需要比较用户输入的密码是否有效。如何获取sha512加密。我还在我的项目中使用FOSUserBundle。如果您确定需要的是SHA512,请尝试。在您的控制器中,您可以这样做(假设您在app/config/security.yml中将SHA512设置为编码算法) Symfony有几种不同的方式来存储密码。散列和检查密码的逻辑存储在以下几个部分: 在键encoder下使用哪一个。如果上面写的是sha512,则您正在使用MessageDigestPasswordEncoder 对于不同
app/config/security.yml中将SHA512设置为编码算法)
Symfony有几种不同的方式来存储密码。散列和检查密码的逻辑存储在以下几个部分:
在键encoder
下使用哪一个。如果上面写的是sha512
,则您正在使用MessageDigestPasswordEncoder
对于不同的用户类型,编码器类型可以不同。要为用户获取正确的编码器,可以询问。这已经在中为您完成了:您将用户和普通密码传递给UserPasswordEncoder->isPasswordValid
,它将使用属于此用户的正确编码器检查密码。这是检查用户密码的最简单界面
如果您真的想知道SHA512散列是如何工作的,可以查看。它以类似“password{salt}”的字符串形式存在。它计算这个的散列。这是为了使密码散列速度变慢,因此不容易使用暴力
检查密码是否有效时。这是一个固定时间比较,可防止对密码哈希的定时攻击。请查看我的。嘿,感谢您提供此链接。太棒了。作为一个变体,您可以获得编码器的实例并使用它的编码方法。看看这个答案中的编码器类,仅仅使用散列函数是不够的,仅仅添加一个salt对提高安全性几乎没有什么作用。相反,使用随机盐在HMAC上迭代大约100ms,并使用散列保存盐。使用诸如PBKDF2
(又称Rfc2898DeriveBytes
)、password\u hash
/password\u verify
、Bcrypt
等函数和类似函数。关键是让攻击者花费大量时间通过暴力手段查找密码。保护您的用户很重要,请使用安全的密码方法。我只是想知道,如果我想验证用户密码(即使他已登录),以防将他重定向到某个安全页面,那么逻辑会是什么。那么,在这种情况下,如何比较密码呢。谢谢@m2mdasy您可以查看文章。还没试过呢。很有用的文章。非常感谢。这对我不起作用。确实如此:我尝试了这个,但不知怎么的,没有得到正确的哈希值!我猜FOSUserBundle使用salt对密码进行编码。
$userName = 'username';
$password = "pass";
$userManager = $this->get('fos_user.user_manager');
$user = $userManager->loadUserByUsername($userName);
$encoder = $this->get('security.encoder_factory')->getEncoder($user);
$encodedPass = $encoder->encodePassword($password, $user->getSalt());
echo $user->getPassword() === $encodedPass;