【发布时间】:2020-01-11 07:42:24
【问题描述】:
我正在写一个关于此代码的问题: Porting SHA-256 library to Excel
如果我在 Excel 中使用上述函数,我不是对二进制数据进行 SHA,而是对数据的 ASCII 表示。因为我想“在 Excel 中挖掘比特币”(当然只是一个教学实验),我需要将一个二进制字符串传递给这个函数,正确的 0 和 1 位序列,而不是 1(4 位)的 ascii 表示。
我可以在 excel 单元格中执行此操作,或者它可以是 VBA 代码,这对我来说并不重要。
这里是我使用的excel:
https://drive.google.com/file/d/1Qdy_PpUj4ZWLGBXCsSSBmQgTMhQITLVz
我在 Excel 表中使用的 SHA256 函数将二进制文件作为文本散列,而不是使用其中的位。这导致此 excel 函数的输出与所需的不同。下面是一个简单的python示例来说明它。
import hashlib
string1 = '876dd0a3ef4a2816ffd1c12ab649825a958b0ff3bb3d6f3e1250f13ddbf0148cc40297f730dd7b5a99567eb8d27b78758f607507c52292d02d4031895b52f2ff'
string2 = '10000111011011011101000010100011111011110100101000101000000101101111111111010001110000010010101010110110010010011000001001011010100101011000101100001111111100111011101100111101011011110011111000010010010100001111000100111101110110111111000000010100100011001100010000000010100101111111011100110000110111010111101101011010100110010101011001111110101110001101001001111011011110000111010110001111011000000111010100000111110001010010001010010010110100000010110101000000001100011000100101011011010100101111001011111111'
hashlib.sha256(bytes.fromhex(string1)).hexdigest()
>>> 'cd93fc352d3b9f27392b3052c61190609fdc80194ade62771ce9588808980be9'
hashlib.sha256(string2.encode('utf-8')).hexdigest()
>>> 'c9aee68969373b4aecc87382fb2aa28276c6b9a9bfb6956615b4b29eb14d51d2'
第一个输出是您应该从第一轮散列得到的实际输出。第二个输出是我从 excel 函数中得到的输出。这是因为这个函数对二进制文件进行哈希处理的方式与对“hello world”之类的字符串进行哈希处理的方式相同。
所以我需要在执行 sha 回合之前将这个 excel 函数中的输入值从文本转换为二进制数据。
链接到我在 Stackexchange 上的问题:https://bitcoin.stackexchange.com/questions/90259/merkle-root-for-block-100000-calculation-in-excel
谢谢
对函数的参数进行了各种 CHAR()/CODE() 操作,但我失败了。
提供的 StackOverflow 示例的其他详细信息。
【问题讨论】:
-
当我说我失败时,我的意思是我在电子表格上搜索了一些返回 #VALUE 的内容。恐怕代码可能产生的积极影响微乎其微。
-
为清晰起见编辑了问题。