Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 致命错误:哈希函数的使用不正确_Php - Fatal编程技术网

Php 致命错误:哈希函数的使用不正确

Php 致命错误:哈希函数的使用不正确,php,Php,我以前从未在PHP中看到过这个致命错误。。。当我在github上发现密码哈希类时,它就开始了: $Config = array( "Depreciated" => 1, "Notices" => 1, "Errors" => 1, "Warnings" => 1, ); $Salt_Settings= 1; $Password_Hashing = new SlayerSolution

我以前从未在PHP中看到过这个
致命错误
。。。当我在github上发现密码哈希类时,它就开始了:

 $Config = array(
        "Depreciated" => 1,
        "Notices" => 1,
        "Errors" => 1,
        "Warnings" => 1,
    );
    $Salt_Settings= 1;
    $Password_Hashing = new SlayerSolutions\Authentication($Salt_Settings,$Config);

$Password_Hashing ->SetSalt("f4dd32"); 
$Password_Hashing ->SetKey("Login"); 
$Password_Hashing ->SetPositioning(0); 

$Password_Entities = $Password_Hashing ->Password_Props($_POST['Password']);
$Result_Array = $Password_Hashing ->Hash_Password($Password_Entities );
这将返回:

致命错误:哈希函数的使用不正确。这一定是 在步骤过程中执行


我无法查看该类的实际代码结构,因为它似乎是用ioncube或其他东西编码的

您的错误源于没有这样做:

 $Formatted_Password = $FrameWork->Format_Password($Password_Entities);
这实际上设置了
$this->Props\u Called=1。毫无意义的狗屎

不应使用此选项的原因: 第一个OMGWTFBBQ时刻:

else{
        $length = mt_rand(0,25);
        $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
        $string = '';

        for ($p = 0; $p < $length; $p++) {
            $string .= $characters[mt_rand(5, strlen($characters) -1)];
        }
        $this->Salt = $string; // Set Salt Randomly Generated
 }
HMAC的全部要点是在关键上撒盐,而不是在信息上撒盐。这有一个非常重要的原因:这是由于HMAC哈希的工作方式。盐在键中“双蘸”,而如果它在值中则不会

(对于记录:
HMAC-ALGO=ALGO((键XOR pad1)CONCAT ALGO((键XOR pad2)CONCAT value))

这是一个重大问题。你再一次因为这样做而失去了很多。马上如果salt在值中,那么您的算法就相当于ALGO(key-ALGO(value)),这并不比ALGO(value.key)好多少


这一点的参考信息如下:

您的错误源于未执行此操作:

 $Formatted_Password = $FrameWork->Format_Password($Password_Entities);
这实际上设置了
$this->Props\u Called=1。毫无意义的狗屎

不应使用此选项的原因: 第一个OMGWTFBBQ时刻:

else{
        $length = mt_rand(0,25);
        $characters = '0123456789abcdefghijklmnopqrstuvwxyz';
        $string = '';

        for ($p = 0; $p < $length; $p++) {
            $string .= $characters[mt_rand(5, strlen($characters) -1)];
        }
        $this->Salt = $string; // Set Salt Randomly Generated
 }
HMAC的全部要点是在关键上撒盐,而不是在信息上撒盐。这有一个非常重要的原因:这是由于HMAC哈希的工作方式。盐在键中“双蘸”,而如果它在值中则不会

(对于记录:
HMAC-ALGO=ALGO((键XOR pad1)CONCAT ALGO((键XOR pad2)CONCAT value))

这是一个重大问题。你再一次因为这样做而失去了很多。马上如果salt在值中,那么您的算法就相当于ALGO(key-ALGO(value)),这并不比ALGO(value.key)好多少


这一点的参考资料如下:

如果没有
SlayerSolutions\Authentication
完整的
源代码,就无法判断。这就是说,任何自称为SlayerSolution的人,明确地设置salt,显然都没有使用安全的解决方案……到底是谁在github上放置了obfusioned代码?有点矛盾!不管怎样,您最好为您的密码哈希实现一些不同的功能。没有必要试图修复这样的东西,有更好的东西在那里。对于bcrypt实现,请看一看这个问题:这是目前最好、最受信任的解决方案,将被纳入PHP核心。因此,总体而言,这个“框架”是一个需要避免的问题?@SophieMackeral:Yup。还有,deceze,他没有使用HMAC-SHA512。他在屠杀HMAC-SHA512。更详细的回答。如果没有
SlayerSolutions\Authentication
full
源代码,就无法判断。这就是说,任何自称为SlayerSolution的人,明确地设置salt,显然都没有使用安全的解决方案……到底是谁在github上放置了obfusioned代码?有点矛盾!不管怎样,您最好为您的密码哈希实现一些不同的功能。没有必要试图修复这样的东西,有更好的东西在那里。对于bcrypt实现,请看一看这个问题:这是目前最好、最受信任的解决方案,将被纳入PHP核心。因此,总体而言,这个“框架”是一个需要避免的问题?@SophieMackeral:Yup。还有,deceze,他没有使用HMAC-SHA512。他在屠杀HMAC-SHA512。如果你想要另一个OMGWTFBBQ时刻:salt、key和明文等变量都受到保护。。。但是你可以使用
密码道具
获得所有密码。如果您计划使用此功能,请确保在使用完身份验证类后立即将其取消设置。另一个好的<代码>mt_rand
不正确。用一些含糊不清的东西,你可以产生非随机盐。这里的更多信息:如果你想要另一个OMGWTFBBQ时刻:salt、key和明文等变量都受到保护。。。但是你可以使用
密码道具
获得所有密码。如果您计划使用此功能,请确保在使用完身份验证类后立即将其取消设置。另一个好的<代码>mt_rand
不正确。用一些含糊不清的东西,你可以产生非随机盐。更多信息请点击此处: