我想创建一个函数或类似 Cron 的东西来执行链接(在 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。拉拉维尔的Crypt
类使用 AES 加密。
就像声明的那样在文档中 http://laravel.com/docs/5.0/encryption:
Laravel 通过 Mcrypt PHP 扩展提供了强大的 AES 加密功能。
据我所知,您不需要解密数据来反转加密。因此,您绝对应该在第一个选项中使用像 sha256 这样的哈希算法。然而 Laravel 已经提供了一个非常好的哈希类,所以为什么不使用它呢。
选项 3(LaravelHash
, Bcrypt)
$hash = Hash::make('secret');
$input = 'secret';
if(Hash::check($input, $hash)){
// the input matches the secret
}
Note你必须使用Hash::check()
用于比较。你不能只是创建另一个哈希Hash::make()
并比较它们。生成的哈希包含随机成分,因此即使它是相同的秘密,Hash::make()
每次都会产生不同的哈希值。
哈希 - Laravel 文档 http://laravel.com/docs/5.0/hashing
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)