Ether
如何從 ether.camp 上的一個很長的種子產生雜湊?
如果 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 中的一個簡單的線上工具會很好。感謝您的寶貴意見。