laravel 中的 Bcrypt 与哈希
Bcrypt vs Hash in laravel
我想创建一个函数或类似 Cron 的东西来执行 link(在 Laravel 中),带有类似密码的东西。我有两个解决方案。但是哪个更好用:
选项 1(哈希):
<?php
// Page 1
$salt = "my-random-hash";
$key = hash('sha256', date('Y-m-d').$salt);
// <-- Insert go to page and send GET with $key code here
// Page 2
$salt = "my-random-hash";
$key = hash('sha256', date('Y-m-d').$salt);
if ($key == $pageOneKey) {
// Execute some code
}
选项 2 (bcrypt):
<?php
// Page 1
$key = Crypt::encrypt(date('Y-m-d'));
// <-- Insert go to page and send GET with $key code here
// Page 2
$key = date('Y-m-d');
$pageOneKey = Crypt::decrypt($key);
if ($key == $pageOneKey) {
// Execute some code
}
此代码已被广泛描述。更好用我的意思是更安全/更安全,或者那种恍惚中的东西。谢谢!
如果您永远不需要解密密钥以供进一步使用,第一个选项更好。
如果加密后需要取回密钥,第二种方案会更好。
您的第二个选项不是 bcrypt。 Laravel 的 Crypt
class 使用 AES 加密。
如前所述 in the documentation:
Laravel provides facilities for strong AES encryption via the Mcrypt PHP extension.
据我所知,您无需能够解密数据即可反转加密。因此,您绝对应该在第一个选项中使用像 sha256 这样的哈希算法。然而 Laravel 附带了一个很好的散列 class 所以为什么不使用它呢。
选项 3(Laravel Hash
,Bcrypt)
$hash = Hash::make('secret');
$input = 'secret';
if(Hash::check($input, $hash)){
// the input matches the secret
}
注意必须使用Hash::check()
进行比较。您不能只使用 Hash::make()
创建另一个散列并比较它们。生成的散列包含随机成分,因此即使是相同的秘密,Hash::make()
每次都会产生不同的散列。
我想创建一个函数或类似 Cron 的东西来执行 link(在 Laravel 中),带有类似密码的东西。我有两个解决方案。但是哪个更好用:
选项 1(哈希):
<?php
// Page 1
$salt = "my-random-hash";
$key = hash('sha256', date('Y-m-d').$salt);
// <-- Insert go to page and send GET with $key code here
// Page 2
$salt = "my-random-hash";
$key = hash('sha256', date('Y-m-d').$salt);
if ($key == $pageOneKey) {
// Execute some code
}
选项 2 (bcrypt):
<?php
// Page 1
$key = Crypt::encrypt(date('Y-m-d'));
// <-- Insert go to page and send GET with $key code here
// Page 2
$key = date('Y-m-d');
$pageOneKey = Crypt::decrypt($key);
if ($key == $pageOneKey) {
// Execute some code
}
此代码已被广泛描述。更好用我的意思是更安全/更安全,或者那种恍惚中的东西。谢谢!
如果您永远不需要解密密钥以供进一步使用,第一个选项更好。
如果加密后需要取回密钥,第二种方案会更好。
您的第二个选项不是 bcrypt。 Laravel 的 Crypt
class 使用 AES 加密。
如前所述 in the documentation:
Laravel provides facilities for strong AES encryption via the Mcrypt PHP extension.
据我所知,您无需能够解密数据即可反转加密。因此,您绝对应该在第一个选项中使用像 sha256 这样的哈希算法。然而 Laravel 附带了一个很好的散列 class 所以为什么不使用它呢。
选项 3(Laravel Hash
,Bcrypt)
$hash = Hash::make('secret');
$input = 'secret';
if(Hash::check($input, $hash)){
// the input matches the secret
}
注意必须使用Hash::check()
进行比较。您不能只使用 Hash::make()
创建另一个散列并比较它们。生成的散列包含随机成分,因此即使是相同的秘密,Hash::make()
每次都会产生不同的散列。