我已经工作了几个月的一些PHP代码,以根据某些数据输入生成哈希值。任务是进行两个事务哈希,然后对这两个事务进行哈希处理。我正在使用sha256位算法库来这样做。我注意到的问题是预期结果没有出来。
我试图:
我不知所措。 另外,我使用文件读取结果并将结果输入到数组中,因为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;
}
}
如果要输入以下内容:
区块链名称:肖恩
发件人:肖恩
金额:2
接收方:Bob
随机数:2
我希望它是6a3ea3befedebacdce2692e91623b23e8e74b9bfff2eedaf4db2470fb3efc6db 设置两次交易后。
我反而得到90189390a229292338f2d6a2e98cec46751ce0ae6b18fa0d3be56681c8cedf44这是不正确的。
我不确定为什么会发生这种情况,以及现在如何解决。
我的完整程序可以在https://github.com/seansanders/PHPSHABlockchain/blob/master/LedgerProgramV4.php
上找到请注意,我为用户留下了故障排除注释,并以绿色标记了该颜色。
程序中还发生了其他可疑的事情:
1)正在被哈希处理的两个事务哈希不能产生预期的正确哈希值。
2)我注意到在提交三笔交易后,我正在写入的测试文件存储的数据超出了预期。我认为这是直接与if语句有关的问题,而我在某个地方出错了。
我已尽力遵守最佳编码实践,并使代码尽可能易于阅读。任何帮助将不胜感激。
答案 0 :(得分:0)
我发现解决该问题的方法是简单地更改为使用CSV文件。原因是文本文件中有一些我认为是/ r / n引起的有趣字符。感谢所有提供帮助的人。