Solidity

Solidity 中的加密——當然,明文是可見的

  • May 26, 2019

我正在使用 Solidity 編寫乙太坊智能合約。

我有一個特定的案例,需要在鏈上加密一段數據,儘管每個人都可以看到明文和密文。

到目前為止,我讀過的所有答案都只是正確地指出,鏈上的加密不是一個好主意。如前所述,這是一個非常具體的案例。

是否有任何庫或功能可以使這項工作?

@goodvibration 是對的。從評論來看,這似乎更像是一個簽名驗證問題。使用ecrecover會輕得多:

  • 您要驗證加密結果是由特定的公鑰生成的。

  • 正如您所建議的,一種解決方案是讓每個節點重新執行加密並進行比較。(注意gas費用不太可能便宜)

  • 另一種解決方案:

    1. 像往常一樣加密。
    2. 使用相同公鑰的配對私鑰為加密輸出生成簽名。(正如上面連結的文章所建議的,您可能需要對加密輸出進行雜湊處理以使其成為 32 個字節)
    3. 生成的 r、s、v 保存在區塊鏈中。
    4. 這就對了。現在每個人都可以使用保存的資訊進行驗證。首先,對加密輸出進行雜湊處理(以獲得 32 個字節)。其次,使用 ecrecovery 與保存的 r、s、v,結果是一個地址,可以通過公鑰的關聯地址進行比較(查看更多here

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