symfony如何为argon2存储盐串?当用户实体中未存储Salt字符串而对密码进行编码时,必须使用argon中的Salt。密码编码器中的函数支持salt作为参数,但为null且从未使用过
/vendor/symfony/security-core/Encoder/SodiumPasswordEncoder.php
public function encodePassword(string $raw, ?string $salt): string
{
if (\strlen($raw) > self::MAX_PASSWORD_LENGTH) {
throw new BadCredentialsException('Invalid password.');
}
if (\function_exists('sodium_crypto_pwhash_str')) {
return sodium_crypto_pwhash_str($raw, $this->opsLimit, $this->memLimit);
}
if (\extension_loaded('libsodium')) {
return \Sodium\crypto_pwhash_str($raw, $this->opsLimit, $this->memLimit);
}
throw new LogicException('Libsodium is not available. You should either install the sodium extension, upgrade to PHP 7.2+ or use a different encoder.');
}
Salt直接存储在散列密码上,不需要使用单独的字段来存储Salt。
不使用$salt
参数,因为在每次调用Na钠加密密码密码str
时,都会生成一个随机salt,如文档中所述:
使用CPU和内存硬哈希算法以及随机生成的salt、内存和CPU限制生成适合密码存储的ASCII编码哈希。
返回值将有哈希密码、使用的算法、盐、内存成本、时间成本等。重新散列和验证用户提供的密码所需的一切,这就是存储在UserINTERface::$密码上的内容。
例如,打电话:
sodium_crypto_pwhash_str('secret_string',
SODIUM_CRYPTO_PWHASH_OPSLIMIT_INTERACTIVE,
SODIUM_CRYPTO_PWHASH_MEMLIMIT_INTERACTIVE
);
将返回如下内容:
$argon2i$v=19$m=32768,t=4,p=1$smna9HfWD+caJJakZiekyQ$qbflsyuP3txLRgsGIt1alcv7HmYjfiMPanYtDU0LtCA
响应的不同部分由$
字符分隔,如下所示:
argon2i
:使用的算法v=19
: versionm=32768, t=4, p=1
:算法选项(内存成本,时间成本和要使用的线程)smna9HfWD caJJakZiekyQ
这是自动生成的盐。 qbflsyuP3txLRgsGIt1alcv7HmYjfiMPanYtDU0LyCA
。实际的哈希。这是存储在用户界面::$password
上的内容,您可以看到它包含验证哈希所需的所有信息,包括salt。不推荐将盐存储在单独的字段中,该字段仅用于向后兼容。
任何使用上述方法或推荐的密码\u散列
的人都可以在没有专用盐场的情况下满足其所有需求。
问题内容: 我已经看过所有类似的线程,阅读了文档,并尝试了许多组合来将空值存储在db中,并且每次都失败。 我正在使用MySQL。 我定义了一个字段。我从csv文件填充db,并且某些单元格没有值。Django文档说: 由于我正在与我一起工作,因此我希望将一个空字符串(csv中的一个空单元格)存储在db中。因此,我(认为)必须添加到该字段中。实际上,我已经尝试了更多: 每次我向数据库插入一个空字符串时
本文向大家介绍如何将小端存储模式转为大端存储模式?相关面试题,主要包含被问及如何将小端存储模式转为大端存储模式?时的应答技巧和注意事项,需要的朋友参考一下
我正试图从本地Spark集群将Spark DataFrame存储为Azure Blob存储中的CSV 首先,我用Azure Account/Account键设置配置(我不确定什么是正确的配置,所以我已经设置了所有这些) 似乎这个问题已经在数据库论坛上报告了!! 在Azure Blob上存储DataFrame的正确方法是什么?
我有一节课 请注意,我已经从equal和hashcode计算中删除了customerId。我创建了这个方法来使用customer对象作为键 下面是遍历Hashmap的方法。 下面是输出。 ==========================================================================================================
这是我的代码-
我试图创建一个简单的网站,其中托管主题和评论。我已经从主题开始,并为它们创建了存储库: 我已经在servlet上下文中定义了存储库的路径。xml: 现在,我想在我的存储库中包含注释,但以下代码不起作用: 我的项目甚至都没建好。你能给我一个建议吗,如何为多个实体创建存储库(主题类和注释类是用@Entity声明的)? 我面对的是: TopicRepository类图标上有HDD图片 org.sprin
我是谷歌云平台的新手,我正在学习本教程 https://cloud.google.com/docs/authentication/getting-started#auth-cloud-implicit-nodeJS 在我使用Google Cloud设置环境变量后,这一行会导致问题 当我注释掉这行时,它会正常工作,否则它会抛出一个错误
我正在学习firebase,有一些关于Firebase存储的问题: < li >我可以使用的总文件大小的限制? < li >我想使用firebase datastorage使用avatar上传图像,然后使用该url将图像加载到带有glide或picasso的imageview。可能吗? < li >我想将我的应用程序与firebase authenticate配合使用,以使用登录、firebase