Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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 SHA 256未生成预期输出_Php - Fatal编程技术网

PHP SHA 256未生成预期输出

PHP SHA 256未生成预期输出,php,Php,我已经在一些PHP代码上工作了几个月,以从一些数据输入生成哈希值。任务是对两个事务进行哈希运算,并对这两个事务进行哈希运算。我正在使用sha256位算法库来实现这一点。我注意到的问题是预期结果没有出来 我试图: 检查变量是否为字符串(注意:hash()函数要求算法和输入变量都有一个字符串 哈希函数输入的代码已正确输出 我不知道问题出在哪里。 此外,我使用文件读取结果并将其输入数组,因为PHP刷新页面,从而导致数据丢失 我在PHP中遇到的问题如下所示: function printTransact

我已经在一些PHP代码上工作了几个月,以从一些数据输入生成哈希值。任务是对两个事务进行哈希运算,并对这两个事务进行哈希运算。我正在使用sha256位算法库来实现这一点。我注意到的问题是预期结果没有出来

我试图:

  • 检查变量是否为字符串(注意:hash()函数要求算法和输入变量都有一个字符串
  • 哈希函数输入的代码已正确输出
  • 我不知道问题出在哪里。 此外,我使用文件读取结果并将其输入数组,因为PHP刷新页面,从而导致数据丢失

    我在PHP中遇到的问题如下所示:

    function printTransactions($ArrayName, $Name){
                $counter = 1;    
                $BlockNumber = 0;
                $HashesFromFileArray = readfileToArray($Name."Hash.txt");
                array_pop($HashesFromFileArray);  
                foreach ($ArrayName as $LineFromFile){     
                    PrintoutToUser("yellow", "3", "Transaction " . $counter . " <font color='white'>" . $LineFromFile . "</font>");                                     
                    If ($counter % 2 == 0) {                        
                        $BlockNumber = $BlockNumber + 1;                                
                        if(isset($HashesFromFileArray[$counter -1])=="1" && isset($HashesFromFileArray[$counter -2])=="1" && gettype($HashesFromFileArray[$counter -1])!="NULL"){
                            if(strlen($HashesFromFileArray[$counter -1])>=66 && strlen($HashesFromFileArray[$counter -2])>=66){
                                $HashValueOfBothTransactions = GetNewHash($HashesFromFileArray[$counter -2].$HashesFromFileArray[$counter -1], "sha256");                             
                                $TransactionInputCounter = $counter-1;
                                $TransactionInputCounter2 = $counter;
                                PrintoutToUser("green", "3", "T". $TransactionInputCounter.":" . $HashesFromFileArray[$counter -2]);
                                PrintoutToUser("green", "3", "T". $TransactionInputCounter2.":" . $HashesFromFileArray[$counter -1]);  
                                PrintoutToUser("blue", "3", "Data Hashed " . $HashesFromFileArray[$counter -2].$HashesFromFileArray[$counter -1]." Length of Array input 1 and 2 is " . strLen($HashesFromFileArray[$counter -2]) . " and " . strLen($HashesFromFileArray[$counter -2]));
                                PrintoutToUser("red", "3", "End of Block: " .$BlockNumber . ":". $HashValueOfBothTransactions . "<br />"); 
                                writeToFileDataPlain("TESTING", $HashValueOfBothTransactions); 
                            }                        
                        }                                                                 
                    }             
                    $counter = $counter + 1;                     
                } 
            }
    
    函数printTransactions($ArrayName,$Name){
    $counter=1;
    $BlockNumber=0;
    $HashesFromFileArray=readfileToArray($Name.“Hash.txt”);
    数组\u pop($HashesFromFileArray);
    foreach($ArrayName作为$LineFromFile){
    打印输出程序(“黄色”、“3”、“事务”。$counter。”“$LineFromFile。””);
    如果($counter%2==0){
    $BlockNumber=$BlockNumber+1;
    if(isset($HashesFromFileArray[$counter-1])==“1”&&isset($HashesFromFileArray[$counter-2])==“1”&&gettype($HashesFromFileArray[$counter-1])!=“NULL”){
    如果(strlen($HashesFromFileArray[$counter-1])>=66和&strlen($HashesFromFileArray[$counter-2])>=66){
    $HashValueOfBothTransactions=GetNewHash($HashesFromFileArray[$counter-2]。$HashesFromFileArray[$counter-1],“sha256”);
    $TransactionInputCounter=$counter-1;
    $TransactionInputCounter2=$counter;
    PrintoutToUser(“绿色”、“3”、“T”。$TransactionInputCounter。”:“$HashesFromFileArray[$counter-2]);
    PrintoutToUser(“绿色”、“3”、“T”。$TransactionInputCounter2.”:“$HashesFromFileArray[$counter-1]);
    PrintoutToUser(“蓝色”、“3”、“数据哈希”。$HashesFromFileArray[$counter-2]。$HashesFromFileArray[$counter-1]。”数组输入1和2的长度为“.strLen($HashesFromFileArray[$counter-2])”和“.strLen($HashesFromFileArray[$counter-2]);
    PrintoutToUser(“红色”、“3”、“块末尾:”.$BlockNumber.:“$HashValueOfBottoTransactions.”
    ); writeToFileDataPlain(“测试“,$HashValueOfBottoTransactions); } } } $counter=$counter+1; } }
    如果我加入以下内容:

    区块链名称:肖恩

    发件人:肖恩

    金额:2

    接受者:鲍勃

    临时:2

    我希望在BACDCE2692E91623B23E8E74B9BFFF2EEDAF4DB2470FB3EFC6DB之前是6A3EA3 设置两个事务之后

    我得到的是90189390A2292338F2D6A2E98CEC46751CE0AE6B18FA0D3BE56681C8CEDF44,这是不正确的

    我不知道为什么会发生这种情况,目前如何解决

    我的完整程序可以在

    注意,我在中留下了故障排除注释,这些注释的颜色编码为绿色,供用户使用

    该计划中还发生了其他一些可疑事件:

    1) 正在散列的两个事务散列没有生成预期的正确散列值

    2) 我注意到,在提交三个事务之后,我正在编写的测试文件中放入的数据比预期的要多。我认为这是if语句的直接问题,我在某个地方出错了


    我已经尽了最大努力坚持最佳编码实践,并使代码尽可能容易阅读。任何帮助都将不胜感激。

    我发现解决这个问题的方法就是简单地改为使用CSV文件。原因是文本文件中出现了一些有趣的字符,我怀疑是由于/r/n。感谢所有帮助过您的人。

    您可能需要转到StackExchange中的代码审阅…您的代码很难理解。您可以尝试调试,并将问题缩小到几行。我建议您阅读PHP PSR和干净的代码。它将真正帮助您编写更好的代码,从而隔离逻辑,并最终解决一些问题。很少有人(如果有的话)会花时间查看100多行几乎不相关的代码,以找到相关的位。将代码减少到再现问题所需的绝对最小值。