Ether

如何從 ether.camp 上的一個很長的種子產生雜湊?

  • April 14, 2016

如果 ether.camp 上的種子超過 64 個字元,那麼我得到:

[Error] Error: Invalid hex string
hexWrite (eth-utils.js:17402)
write (eth-utils.js:17477)
fromString (eth-utils.js:17010)
Buffer (eth-utils.js:16980)
toAddress (eth-utils.js:12946)
setPrivateKey (rlpBuilder.js:100)
setSeedPhrase (rlpBuilder.js:95)
setSecretKey (rlpBuilder.js:108)
(anonymous function) (balanceTxDialog.js:76)
dispatch (jquery.min.js:3:8555)
handle (jquery.min.js:3:5258)

我嘗試使用 Web Inspector 發送種子,上面寫著:

// must be an even number of digits
var strLen = string.length
if (strLen % 2 !== 0) 
  throw new Error('Invalid hex string')
if (length > strLen / 2) {
   length = strLen / 2
}
for (var i = 0; i < length; i++) {
   var parsed = parseInt(string.substr(i * 2, 2), 16)
   if (isNaN(parsed)) 
       throw new Error('Invalid hex string')
   buf[offset + i] = parsed
}
return i

該錯誤在 Safari 和 Firefox 中都是永久性的。

此外,該限制取決於您在傳輸表單中輸入的字元,並且可以更低(例如,!@#$%^^僅 63 個)。

我嘗試使用另一個種子短得多的帳戶<40個字元,一切正常。

我的問題是如何從我很長的種子中產生雜湊?

正如您所說,由於該站點似乎不接受超過 64 個字元的字元串,因此我建議使用加密散列手動散列種子,例如 SHA256。這應該返回一個 64 字元的十六進製字元串,然後您可以將其用作種子。

例如,在 Linux 中,您可以使用該sha256sum命令。其他作業系統也應該有類似的工具

以下是如何從種子中獲取有用的雜湊,即使它太長。您對種子使用 Keccak-256 散列算法。生成的 32 字節雜湊(64 個字元

$$ 0-9a-f $$) 是您可以在 ether.camp 中用於簽署交易的雜湊值。請注意,Keccak-256 與 SHA3 不同。花了一些時間才弄清楚,來自https://medium.com/@ConsenSys/are-you-really-using-sha-3-or-old-code-c5df31ad2b0#.i1ztcljlm的資訊真的很有幫助。您可以使用 npm 在本地安裝。有一些線上工具,但是一旦您將種子粘貼到荒野的某個地方,請確保不要依賴您的帳戶安全。順便說一句,ether.camp 中的一個簡單的線上工具會很好。感謝您的寶貴意見。

引用自:https://ethereum.stackexchange.com/questions/2964