Elliptic-Curves
一台筆記型電腦能在一小時內生成十億個橢圓曲線密鑰嗎?
我希望我的應用程序生成一個 EC 密鑰對。
公鑰的 sha256 散列的前四個字節應該包含一個已知的 IP 地址。
由於雜湊是單向函式,我需要通過生成 40 億個鍵來強制執行此操作。
在筆記型電腦上,這可能在一小時內實現嗎?
Openssl 不是執行此操作的方法 - 僅生成一千個密鑰需要幾秒鐘。按 4s/千計算,40 億需要 6 個月。
#!/bin/bash time for a in {0..999} ; do openssl ecparam -genkey -name secp256k1 -noout -out key.priv.pem done
openssl 是否在做一些不必要的事情來製作密鑰來檢查雜湊?
在現代 CPU 上,最快的橢圓曲線算法可以在大約 40k 週期內生成一個密鑰對。一台高端筆記型電腦有四個執行頻率約為 3 GHz 的核心,因此它每秒可以生成大約 30 萬個密鑰對,即每小時十億個。(相比之下,SHA-256 的成本可以忽略不計。)
然而,secp256k1 遠不是最快的曲線。根據上面的連結,使用許多算法生成密鑰對需要 10 倍的時間,因此迭代搜尋空間可能至少需要數十個小時。更主流的筆記型電腦,你可能會看幾天。
因此,如果您只是蠻力生成密鑰對以尋找匹配的密鑰對,即使有更好的實現,您也無法在一小時內完成(除非您很幸運)。